本篇文章给大家谈谈talejava博客,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、用java api进行sort2、学习java se注重的只是点是哪些,最难学的知识点有哪些呢?3、北通蝙蝠4可以玩我的世界吗4、Java Web 项目,数据库建表
用java api进行sort
作者 SUNJ 本节中所描述的多态算法 (polymorphic algorithms)是由 JDK 所提供的可重复使用的功能性片段 它们均取自Collections类 并都采用静态方法(它的第一个参数是执行操作的 对象集)的形式 由Java平台所提供的绝大多数算法都操作于List对象 但有两个 (min 和 max) 操作于任意Collection对象 以下是关于算法的描述排序(Sorting) 排序算法可为一个 List 重新排序 以使它的元素按照某种排序关系成上升式排序 有两种形式的操作被提供 简单形式的操作只采用一个 List 并按照它的元素的自然排序进行排序 如果你对自然排序的概念不熟悉 那么应该重新阅读 对象排序(Object Ordering) sort 操作使用做了些优化的合并排序(merge sort) 算法 如果你不知道它的含义 而又很看重它的话 请阅读关于算法的任意一种教科书 这个算法的重要之处是 快速: 这个算法被保证运行在 n log(n) 时间内 并在已基本排序的列表上 它的速度实质上更快 经验表明 它的速度与高度优化的快速排序(quicksort)的速度差不多 Quicksort 一般被认为快于合并排序 但它不稳定 并不保证 n log(n)性能 稳定: 这就是说 它不为相等的元素重新排序 如果你为相同的列表做不同属性的重复排序 这一点对你来说是十分重要的 如果一个邮件程序的用户为它的邮件箱按日期排序 然后又按发件人排序 这个用户自然地期望某个特定发件人的现在相邻的消息列表将(仍然)按日期排序 这一点只有在第二个排序是稳定的时候才能得以保证 以下是 一个小程序 它可按词典(字母)顺序打印它的参数 import java util *;public class Sort {public static void main(String args[]) {List l = Arrays asList(args);Collections sort(l);System out println(l);}}让我们运行这个程序 % java Sort i walk the line[i line the walk]演示这个程序只是为了表示我是毫无保留的 这个算法确实是象它们所显现的那样简单 我不想低估你的能力而演示更傻的例子 第二种形式的 sort除采用一个 List 外 还采用一个 Comparator 并且使用 Comparator 对元素进行排序 还记得在 Map 课程结束时的排列组的例子吗? 它以一个非特定的顺序打印出排列组 假设你要以相反的大小顺序打印它们 大的排列在前面 下列例子将告诉你如何借助 sort 方法的第二种形式而达到你的目的 回想一下 排序表是以 List 对象的形式作为一个 Map 中的值而被存储的 修改后的打印代码通过 Map 的 values视图进行迭代 将每一个通过最小尺寸测试的List放进List 之中 然后 代码使用一个期望 List 对象的 Comparator 为这个 List 排序 并实现反转大小排序 最终 代码通过现在已排序的 List 进行迭代 打印它的元素(排序组) 这个代码在 Perm 的 main 方法末尾替代了打印代码: // Make a List of all permutation groups above size thresholdList winners = new ArrayList();for (Iterator i = m values(erator(); i hasNext(); ) {List l = (List) i next();if (l size() = minGroupSize)winners add(l);}// Sort permutation groups according to sizeCollections sort(winners new Comparator() {public int pare(Object o Object o ) {return ((List)o ) size() ((List)o ) size();}});// Print permutation groupsfor (Iterator i=erator(); i hasNext(); ) {List l = (List) i next();System out println(l size() + : + l);}用与 Map 课程中使用的相同的词典运行 这个程序 并使用相同的最小排序组尺寸( ) 会产生下列输出: % java Perm dictionary txt : [apers apres asper pares parse pears prase presa rapes reaps spare spear] : [alerts alters artels estral laster ratels salter slater staler stelar talers] : [least setal slate stale steal stela taels tales teals tesla] : [estrin inerts insert inters niters nitres sinter triens trines] : [capers crapes escarp pacers parsec recaps scrape secpar spacer] : [anestri antsier nastier ratines retains retinas retsina stainer stearin] : [palest palets pastel petals plates pleats septal staple tepals] : [carets cartes caster caters crates reacts recast traces] : [ates east eats etas sate seat seta teas] : [arles earls lares laser lears rales reals seral] : [lapse leaps pales peals pleas salep sepal spale] : [aspers parses passer prases repass spares sparse spears] : [earings erasing gainers reagins regains reginas searing seringa] : [enters nester renest rentes resent tenser ternes treens] : [peris piers pries prise ripes speir spier spire]# ;上一页 下一页# ;a混排(Shuffling)混排算法所做的正好与 sort 相反: 它打乱在一个 List 中可能有的任何排列的踪迹 也就是说 基于随机源的输入重排该 List 这样的排列具有相同的可能性(假设随机源是公正的) 这个算法在实现一个碰运气的游戏中是非常有用的 例如 它可被用来混排代表一副牌的 Card 对象的一个 List 另外 在生成测试案例时 它也是十分有用的 这个操作有两种形式 第一种只采用一个 List 并使用默认随机源 第二种要求调用者提供一个 Random 对象作为随机源 这个算法的一些实际代码曾在 List 课程中被作为例子使用 常规数据操作(Routine Data Manipulation)Collections 类为在 List 对象上的常规数据操作提供了三种算法 这些算法是十分简单明了的:reverse: 反转在一个列表中的元素的顺序 fill: 用特定值覆盖在一个 List 中的每一个元素 这个操作对初始化一个 List 是十分有用的 copy: 用两个参数 一个目标 List 和一个源 List 将源的元素拷贝到目标 并覆盖它的内容 目标 List 至少与源一样长 如果它更长 则在目标 List 中的剩余元素不受影响 搜索(Searching)binary search (二进制搜索)算法用二进制搜索算法在一个已排序的 List 中寻找特定元素 这个算法有两种形式 第一种采用一个 List 和一个要寻找的元素 ( 搜索键(search key) ) 这种形式假设 List 是按照它的元素的自然排序排列成上升顺序的 第二种形式除采用 List 外 还采用一个 Comparator 以及搜索键 并假设 List 是按照特定 Comparator 排列成上升顺序的 排序算法(描述见上) 可优先于 binarySearch 而被用来为List 排序 两种形式的返回值是相同的: 如果 List 包含搜索键 它的索引将被返回 如果不包括 则返回值为 ( (insertion point) ) 这里的 insertion point 被定义为一个点 从这个点该值将 *** 入到这个 List 中 大于该值的第一个元素的位置索引 或list size() 选用这个不可否认的难看的公式是为了保证如果且仅如果搜索键被发现 则返回值将等于 它基本上是一个将布尔逻辑 ( found ) 和整数 ( index ) 综合到单一的int返回值的大杂烩 下列惯用程序对 binarySearch 操作的两种形式均适用 它寻找特定搜索键 如果搜索键不出现 则将它插入到适当的位置: int pos = Collections binarySearch(l key);if (pos 0)l.add(-pos-1, key);寻找极值(Finding Extreme Values) min 和 max 算法分别返回包含在特定 Collection 中的最小和最大元素。tW.WINGwIt这两个操作都各有两种形式,简单形式只采用一个 Collection, 并按照元素的自然排序返回最小 (或最大) 元素;另一种形式除采用 Collection 之外,还采用一个 Comparator,并按照特定 Comparator返回最小(或最大)元素。 这些就是由Java 平台提供的作用于与 List 对象相对的任意 Collection 对象上的仅有算法,就象上面提到的 fill 算法一样,这些算法都是非常简单明了的,它们是Java平台为程序员特别提供的便利工具。 lishixinzhi/Article/program/Java/JSP/201311/19791
学习java se注重的只是点是哪些,最难学的知识点有哪些呢?
1. 基本数据类型
整形:
byte 1 个字节
short 2 个字节
int 4个字节
long 8个字节
字符:
char 2个字节
浮点数:
float 4个字节
double 8个字节
布尔:
boolean 1个字节
2.java 7 新增二进制整数
以0b或者0B开头
3.java中字符时16位的Unicode编码方式,格式是’\uXXXX’,其中xxxx代表一个十六进制整数
4.java中规定了正无穷大、负无穷大和零
正无穷大= 一个正数除以0
负无穷大= 一个负数除以零
0.0 除以0.0 或者 对一个负数开方 得到一个非数
5. 在java中布尔类型只能是true和false
6. 在java中没有多维数组
看似像C语言中的多维数组不是真正的数组,比如 a[3][4] , a[0] a[1] a[2] 是真实存在的,装的是地址,和c语言中动态分配为的数组一样
int [][] b = new int[3][4]
7. Java中带包的编译方法
javac -d . Hello.java 会在当前目录下生成目录树
运行 java 包名字.类名字
8. Java多态中的对象的filed 不具有多态性,如 父类 对象 = new 子类(), 对象.field 是调用的父类的,即使子类中覆盖了该字段。
9. instanceof 运算符
格式: 引用变量名 instanceof 类名(或者接口) 他用于判断前面的对象是否是后面对象的类,子类、实现类的实例,是返回true,否者返回false
10. Java 中基本数据类型和对应封装类之间的转化
int a = 1;
Integer A = new Integer(a);
a = A.intValue();
其他的类型也是这样的。
11.单例(singleton)类 例子
复制代码 代码如下:
class Singleton
{
private static Singleton instance;
private Singleton(){}
public static Singleton getInstance()
{
if(instance == null)
{
instance = new Singleton();
}
return instance;
}
public static void main(String[] args)
{
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1 == s2);
}
}
12.final修饰的成员变量初始化问题
类Field: 必须在静态初始块中或声明该FIeld时指定初始值
实例Field:必须在非静态初始块中或声明该FIeld时指定初始值或构造器中声明
13.Final 变量必须显式初始化,系统不会对final变量进行隐式初始化
14.java会使用常量池来管理曾经用过的字符串直接常量,例如:String a = “java”; ,系统把常量字符串“java”存在常量池,当再次执行 String b = “java”; a == b 是true
15.final 方法不可以重写,final类不能被继承
如果用private 方法 和 final private 是一样的
若果是用final修饰的方法在子类中出现,那是子类新定义的,与父类没有关系
16.不可变类:创建后该类的Field是不可改变的。java提供了8个基本变量的包装类和string都是不可改变类。
17.缓存实例的不可改变类
复制代码 代码如下:
class CacheImmutale
{
private static int MAX_SIZE = 10;
private static CacheImmutale[] cache = new CacheImmutale[MAX_SIZE];
private static int pos = 0;
private final String name;
private CacheImmutale(String name)
{
this. name = name;
}
public String getName()
{
return name;
}
public static CacheImmutale valueOf(String name)
{
for(int i = 0; i MAX_SIZE; ++i)
{
if(cache[i] != null cache[i].getName().equals(name))
return cache[i];
}
if(pos == MAX_SIZE)
{
cache[0] = new CacheImmutale(name);
pos = 1;
}
else
{
cache[pos++] = new CacheImmutale(name);
}
return cache[pos -1];
}
public boolean equals(Object obj)
{
if(this == obj)
return true;
if(obj != null obj.getClass() == CacheImmutale.class)
{
CacheImmutale ci = (CacheImmutale)obj;
return name.equals(ci.getName());
}
return false;
}
public int hashCode()
{
return name.hashCode();
}
}
public class CacheImmuteTest
{
public static void main(String[] args)
{
CacheImmutale c1 = CacheImmutale.valueOf(“Hello”);
CacheImmutale c2 = CacheImmutale.valueOf(“Hello”);
System.out.println(c1 == c2);
}
}
用缓存实例要看某个对象的使用频率,若重复使用那就利大于弊,若不经常使用那弊就大于利
还有java提供的java.lang.Integer 创建数值在-128-127之间的数采用缓存机制的
Integer in2 = Integer.valueOf(6);
Integer in3= Integer.valueOf(6);
in2 == in3 is true;
18. static 和 abstract 不能同时修饰一个方法,没有类抽象方法
19.一个类可以又一个父类,实现多个接口,接口中Filed是public 、static、final的,方法是public abstract的
20.非静态内部类的方法访问某个变量,搜索顺序为:先内部类中方法内- 内部类 – 外部类中如果都找不到则出现编译错误
复制代码 代码如下:
import java.util.*;
public class DiscernVariable
{
private String prop = “外部类的实例变量”;
private class InClass
{
private String prop = “内部类的实例变量”;
public void info()
{
String prop = “局部变量”;
System.out.println(“外部类的field值:” + DiscernVariable.this.prop);
System.out.println(“内部类的field值:” + this.prop);
System.out.println(“局部变量的值:” + prop);
}
}
public void test()
{
InClass in = new InClass();
in.info();
}
public static void main(String[] args)
{
new DiscernVariable().test();
}
}
21.非静态内部类不能有静态方法、静态Field、静态初始化块
22.在外部类之外访问内部类
访问非静态内部类:outclass.Inclass varname = new outclass().new InClass();
访问静态内部类: outclass.Inclass varname = new outclass.Inclass();
复制代码 代码如下:
import java.util.*;
class Out
{
class In
{
public In()
{
System.out.println(“非静态内部类构造器”);
}
}
}
public class CreatInnerInstance
{
public static void main(String[] args)
{
Out.In in = new Out().new In();
/*
以上的代码可分开写为:
Out.In in;
Out out = new Out();
in = out.new In();
*/
}
}
class SubClass extends Out.In
{
//显示定义SubClass的构造器
public SubClass(Out out)
{
//通过转入的Out对象显示调用In的构造器
out.super();
}
}
复制代码 代码如下:
import java.util.*;
class StaticOut
{
static class StaticIn
{
public StaticIn()
{
System.out.println(“静态内部类构造器”);
}
}
}
public class CreatStaticInnerInstance
{
public static void main(String[] args)
{
StaticOut.StaticIn in = new StaticOut.StaticIn();
/*
以上的代码可分开写为:
StaticOut.StaticIn in;
in = new StaticOut.StaticIn();
*/
}
}
class SubClass extends StaticOut.StaticIn
{
//无须创建内部类实例
}
北通蝙蝠4可以玩我的世界吗
我的世界Java版是不支持原生手柄的,基岩版可以。如果要手柄玩Java版可能需要按键映射。
Java Web 项目,数据库建表
Java 使用executeUpdate向数据库中创建表格
一、创建mysql.ini文件,配置如下
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/select_test
user=root
pass=123456
这样以后修改数据库的配置直接在mysql.ini文件中修改。
二、编写代码
initParam方法: 获得mysql.ini中的数据
createTale方法: 连接数据库,并且executeUpdate执行sql语句。此例的sql文件为创建表语句。
main方法: 传入Sql语句。
class ExecuteDDL {
private String driver;
private String url;
private String user;
private String pass;
Connection conn;
Statement stmt;
public void initParam(String paramFile) throws Exception {
Properties props = new Properties();
props.load(new FileInputStream(paramFile));
driver = props.getProperty(“driver”);
url = props.getProperty(“url”);
user = props.getProperty(“user”);
pass = props.getProperty(“pass”);
}
public void createTale(String sql) throws Exception{
try {
Class.forName(driver);
conn = DriverManager.getConnection(url,user,pass);
stmt = conn.createStatement();
stmt.executeUpdate(sql);
}
finally
{
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
}
}
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
ExecuteDDL ed = new ExecuteDDL();
ed.initParam(“src/mysql.ini”);
ed.createTale(“create table student ” +
“(id int, ” +
“name varchar(50), ” +
“num varchar(20) )”);
System.out.println(“Creating table success!”);
}
注意事项:传入的Sql语句最好在MySql测试通过,并且传入的mysql.int文件的路径必须正确。
当执行完毕后,在MySql的select_test数据库中查看该Student表是否已经创建成功了。
三、使用executeUpdate方法,向表中插入数据。
将上面的创建表的Sql语句改为插入数据表的语句,执行executeUpdate方法,其结果就是想表中插入数据。
创建insertSql变量。
private static String insertSql = “insert into student values(1,’XiaoMing’,’06108787′)”;
执行插入语句。
ed.createTale(insertSql);
关于talejava博客和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。