java基础知识点总结

对java基本语法和类库(数学,字符串,IO,异常,线程初步,容器类初步,网络初步)有所了解。

http://www.chinadmd.com/file/w3rxuz63pe6ow3uczze3vxas_1.html

集合的泛型版本,尤其是set、list和map接口及implementation类的使用

该代码不使用泛型: 

List li = new ArrayList(); 

li.put(new Integer(3)); 

Integer i = (Integer) li.get(0); 

该代码不使用泛型: 

List<Integer> li = new ArrayList<Integer>(); 

li.put(new Integer(3)); 

Integer i = li.get(0);

 

当声明或者实例化一个泛型的对象时,必须指定类型参数的值: Map<String, String> map = new HashMap<String, String>();

 

List<>

List<String> list = newArrayList<String>();list.add(rs.getString("ZJHM"));

.List<Bank> list = newArrayList<Bank>();

 

Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值

Map接口用于维护键/值对(key/value pairs)。该接口描述了从不重复的键到值的映射。

Map接口

实现了Map接口的类用来存储键-值对。

Objectput(Object key,Object value);//如果key已经存在,则返回原key的值value

Objectget(Object key);

Objectremove(Object key);

booleancontainsKey(Object key);

booleancontainsValue(Object value);

int size();

booleanisEmpty();

voidputAll(Map t);

voidclear();

 

implementation类

interface接口,只列出方法,而不实现,具体实现在其子类中

implementation,实现接口,表示子类实现了怎样的接口或父类

 

"=="和equals方法有什么区别

==是判断两个变量或实例是不是指向同一个内存空间

equals是判断两个变量或实例所指向的内存空间的值是不是相同

 

==是指对内存地址进行比较

equals()是对字符串的内容进行比较

 

==操作符专门用来比较变量的”内容”或者”实质”是否相等的;

==是”内容”(或实质),而equals是表象

 

正确使用 hashCode 和 equals 方法

hashCode()和equals()定义在Object类中,这个类是所有java类的基类,所以所有的java类都继承这两个方法。

 

hashCode()方法被用来获取给定对象的唯一整数。这个整数被用来确定对象被存储在HashTable类似的结构中的位置。

 

重写equals()方法必须要重写hashCode()方法。

 

正确选用集合类和接口包括comparable接口

JAVA集合类-用集合(Collection)

Java.lang.Comparable接口中唯一的方法是compareTo(),在该方法中可以进行简单的相等比较以及执行顺序比较

 

定义、实例化和启动新线程

java.lang.thread—run() 直接new即可

java.lang.runnable—run() 用Thread的构造方法

 

注意:对Java来说,run()方法没有任何特别之处。像main()方法一样,它只是新线程知道调用的方法名称(和签名)。因此,在Runnable上或者Thread上调用run方法是合法的。但并不启动新的线程。

四、例子

1、实现Runnable接口的多线程例子/**

*实现Runnable接口的类*

Public class DoSomethingimplements Runnable{

privateStringname;

publicDoSomething(Stringname){

this.name=name;}

publicvoidrun(){

for(inti=0;i<5;i++){

for(longk=0;k<100000000;k++);System.out.println(name+":"+i);}}}

/***测试Runnable类实现的多线程程序*

Public class TestRunnable{

Public static void main(String[]args){

DoSomethingds1=newDoSomething("阿三");

DoSomethingds2=newDoSomething("李四");

Threadt1=newThread(ds1);

Threadt2=newThread(ds2);

t1.start();

t2.start();

}

}

执行结果:李四:0阿三:0李四:1阿三:1李四:2李四:3阿三:2李四:4阿三:3阿三:4

Processfinishedwithexitcode02、扩展Thread类实现的多线程例子/**

*测试扩展Thread类实现的多线程程序*

Public class TestThreadextends Thread{

publicTestThread(Stringname){

super(name);}

publicvoidrun(){

for(inti=0;i<5;i++){

for(

longk=0;

k<100000000;

k++);

System.out.println(this.getName()+":"+i);

}}

Public static voidmain(String[]args){

Threadt1=newTestThread("阿三");

Threadt2=newTestThread("李四");

t1.start();

t2.start();

}}

执行结果:

阿三:0李四:0阿三:1李四:1阿三:2李四:2阿三:3阿三:4李四:3李四:4

 

Processfinishedwithexitcode0

对于上面的多线程程序代码来说,输出的结果是不确定的。其中的一条语句for(longk=0;k<100000000;k++);是用来模拟一个非常耗时的操作的。

 

JAVA Formatter

我要输出一个当前时间的年月日时间格式的字符串

2013-04-2822:20:12

一般而言我们可能会这么干

SimpleDateFormat dateFormater= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Calendar cal =Calendar.getInstance();

System.out.println(dateFormater.format(cal.getTime()));

System.out.println(String.format("%1$tF%1$tT", Calendar.getInstance()));

 

String s =String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);

包含三个格式说明符"%1$tm"、"%1$te" 和 "%1$tY",它们指出应该如何处理参数以及在文本的什么地方插入它们

 

转换 参数类别 说明

'b', 'B' 常规    如果参数 arg 为 null,则结果为"false"。如果 arg 是一个boolean 值或 Boolean,则结果为String.valueOf() 返回的字符串。否则结果为 "true"。

'h', 'H' 常规    如果参数 arg 为 null,则结果为"null"。否则,结果为调用 Integer.toHexString(arg.hashCode())得到的结果。

's', 'S' 常规    如果参数 arg 为 null,则结果为"null"。如果 arg 实现Formattable,则调用 arg.formatTo。否则,结果为调用 arg.toString() 得到的结果。

'c', 'C' 字符    结果是一个 Unicode 字符

'd'  整数    结果被格式化为十进制整数

'o'  整数    结果被格式化为八进制整数

'x', 'X' 整数    结果被格式化为十六进制整数

'e', 'E' 浮点    结果被格式化为用计算机科学记数法表示的十进制数

'f'  浮点    结果被格式化为十进制数

'g', 'G' 浮点    根据精度和舍入运算后的值,使用计算机科学记数形式或十进制格式对结果进行格式化。

'a', 'A' 浮点    结果被格式化为带有效数和指数的十六进制浮点数

't', 'T' 日期/时间    日期和时间转换字符的前缀。请参阅日期/时间转换。

'%'  百分比  结果为字面值 '%' ('\u0025')

'n'  行分隔符 结果为特定于平台的行分隔符

 

JAVA Scanner

Scanner是SDK1.5新增的一个类,可是使用该类创建一个对象.

Scanner reader=newScanner(System.in);

然后reader对象调用下列方法(函数),读取用户在命令行输入的各种数据类型:

next.Byte(),nextDouble(),nextFloat,nextInt(),nextLin(),nextLong(),nextShot()

 

java.util.Locale

Locale确定了一种专门的语言和区域.通过使用java.util.Locale对象来为那些区域敏感型的对象定制格式化数据以及向用户的展示.

Locale类有如下几个构造器:

  . Locale(String language)

  . Locale(String language, Stringcountry)

. Locale(String language, Stringcountry, String variant)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值