数组(引用类型)
数组是相同数据类型的有序集合
1. 操作对象就是操作引用
2. 数组也是对象,数组元素相当于对象的成员变量
3. 数组的长度是确定的不可变得。越界:ArrayIndexOutOfBoundsException
a.length数组的长度。可以用增强for循环遍历数组
数组声明 int[] a,或者 int a[]都可以。
数组的创建a = new int[5];
数组元素的初始化(3种)
1. 默认初始化。(成员变量,数组相当于对象的成员变量)数值型为0.Boolean为false
char为\u0000
2. 动态初始化。a[4]=5;
3. 静态初始化。Int c[] = {2,4,5,6}
Car[] car = {new Car(“”),new Car(“”)}
字符串的使用
Java字符串就是Unicode字符序列,(String是不可变的字符序列)
StringBuilder是可变的字符序列,局部变量一般使用它,线程不安全,效率高。
StringBuffer和StringBuilder基本一样,只是StringBuffer是线程安全的,效率会低一些。
String不可变字符序列
StringBuilder sb = new StringBuilder();//字符数组初始长度为16
append方法返回this,对象本身,通过return this实现方法链
数组扩容:2*原大小+2 (包头不包尾)
ArrayList容器(数组实现)
多维数组(以二维数组为例)
int[][] a ={{1,2},{34},{5,6,7}};
数组的拷贝
Systerm.arraycopy(参数列表),实现数组之间的复制
Java.util.Arrays数组操作的基本方法基本都有。
二分法查找也有一个方法(前提是sort过)
使用二分法查找必须先对数组进行排序。
命令行参数问题
CMD输入运行类命令,后面带参数
Eclipse run-》 openrun dialog ->run configrations
增强的for循环(JDK1.5以后增加的)
For(int i:a){
}
基本数据类型的包装类(Wrapper Class)
Java并不是纯粹面向对象的语言,基本数据类型却不是面向对象的,实际使用过程中经常需要将基本数据转化为对象,便于操作,例如集合的操作,就需要转化。全部位于java.lang包下
基本数据类型 | 包装类 |
byte | Byte |
boolean | Boolean |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
自动装箱和自动拆箱
自动装箱:
Integera = 1000;//JDK1.5以后,自动装箱,编译器会自动Integer a =new Integer(1000)
Integerb = 1000;
System.out.println(a==b);//false
intab = new Integer(1500);//编译器:int ab= new Integer(1500).intValue()
Integerc =100;//[-128,127]之间的数,仍然当基本类型处理
Integerd =100;//处理的时候变为基本类型
System.out.println(c==d);//true
inte =1000;
intf =1000;
System.out.println(e==f);//true
用Integer和int类比其它基本数据类型和包装类。
时间类:
日期计算优先考虑使用Calendar日历的方式。
标准纪元1970.1.1 0:0:0开始到某一个时刻的毫秒值,类型long.
@Deprecated 加上这个注释的代码,表示废弃的,中间加上一横杠,不建议使用,源码中会有相应的推崇的相同实现。
DateFormat(抽象类)和SimpleDateFormat(实现类)
完成字符串和时间对象的转化。
GregorianCalendar是Calendar的一个具体子类。
对时间的不设置值,就采用当前时间,比如只设置小时,那么分、秒就取现在时间。
由字符串到Date,而不是直接设置值,因为数字设值有区别,比如1代表2月。
File类
Java.io.File类:文件和目录路径名抽象表示形式。
f.isFile()是一个普通的文件
f.isDirectory()是一个目录
mkdir()和mkdirs()
前面父目录必存在,才创建 ,后者无论存在与否,直接建立所用目录。