Browse Month

六月 2015

Java常用类

包装类:
1.基本类型转包装类有三种方式:
构造方法或者包装类的静态方法valueof()或自动转换;
其中构造方法,可以使用对应类型的基本数据类型作为参数,或者(除了char类型的以外)使用对应基本数据类型对应的字符串作为参数;
valueof()方法与构造方法类似;例如:Integer.valueOf(3);Short.valueOf((short)4);
自动转换例子:Integer intValue=9;
2.包装类转成基本类型数据:
typeValue方法或者自动转换
typeValue方法例子:Integer intvalue=34;int a=intvalue.intValue();
自动转换例子:Integer intvalue=34;int a=intvalue;
3.基本类型转换成字符串:使用toString方法,或者基本类型后面加空字符串的方法:例如String a=Integer.toString(12);String b=Character.toString(‘女’);String h=322+””;
4.字符串转基本类型:通过parseType方法;int nu=Integer.parseInt(“121”);boolean a=Boolean.parseBooblean(“false”);

5.基本类型的包装类对象间的装箱和拆箱工作增加了系统的额外负担,如果只是用基本类型则不会。包装类对象只在基本类型需要用对象表示时才使用,包装类并不是用来取代基本类型的;

java碎碎念

1.src代表的是source的意思,也就是源文件的意思,所以在项目名称下面的目录是src然后再往下才是项目的类别。
2.方法里修饰变量或常量不加修饰符;当然main方法中也是。
3.类里面定义一个静态常量必须显式初始化(直接赋值,或者在静态代码块中赋值);可以这样理解,该常量是适用于类的常量,可以通过类名进行调用,不用创建对象就可使用,那么就必须在类初始化的时候对其完成初始化。
4.initialized意思是初始化
5.static静态修饰符,可用来修饰类成员,使得该类的所有对象都会共享这个修饰符修饰的属性或者方法。static属性和方法可以直接通过类名进行调用;static方法就是其中不能有this的方法(但是可以被this调用)『0?』。在static方法内部不能调用实例方法或实例变量『1?』,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身可以调用static方法。这实际上正是static方法的主要用途,也正是其方便之处。
『0?』处可以这样理解:Static方法是类方法,先于任何的实例(对象)存在。即Static方法在类加载时就已经存在了,但是对象是在创建时才在内存中生成。那么既然是类方法就可以不用创建对象就可以调用,而this调用的方法或属性是需要创建对象的,所以static中如果用this那么使用时必然要先定义类的对象,显然和static的定义或者意义相违背;换者说this指代的是对象。那么如果类方法直接被类调用了,那么this指代谁去呢?所以static方法是没有this的方法,同样也没有super(因为super是代指父类对象,super调用的方法或属性同样也是需要实例化对象才能使用的)。
『1?』处可以这样理解:static方法如果调用实例方法或者变量那么就需要建立对象才能使用了显然不对。(也可以这样讲:就算要调用也要通过this来调用,而static中不能有this。)
6.举个例子main方法,public static void main(){}用的就是类方法,那么即使没有创建任何对象也是可以使用的。每次执行main方法并不需要你去建立对象,就能执行方法中的代码;为什么要这么定义,和JVM的运行有关系。当一个类中有main()方法,执行命令“java 类名”则会启动虚拟机执行该类中的main方法。由于JVM在运行这个Java应用程序的时候,首先会调用main方法,调用时不实例化这个类的对象,而是通过类名直接调用因此需要是限制为public static。而main()方法中字符串参数数组作用是接收命令行输入参数的,命令行的参数之间用空格隔开。
7.java中类的访问修饰符有两种一种是常用的public,一种是不加访问修饰符也就是默认的。而类成员有4种访问修饰符,public、private、protected、默认的。
8.this的用法:【1】、表示对当前对象的引用!比如:《1》构造方法中用this.成员变量表示当前对象的成员变量,可以在局部方法中区分参数和成员变量,解决局部变量和成员变量之间的冲突;《2》使用this调用成员方法【2】、用于在构造方法中引用其他类型的构造方法。但是这里必须非常注意:一次只能引用一个构造方法且必须放在方法语句的第一行;(实例方法不能调用构造方法,但可以调用this.属性。『3?』)
『3?』这点和static方法做对比记忆,这一点上比static方法限制少了一个this.属性。可以这样理解实例方法是具体实例使用的方法,那么既然已经有了具体对象,那么不需要再重新用构造方法构造对象。
9.final的用法

final用法及其对应的效果:
【1】.final可以用来修饰类,表示这个类不能被继承。
【2】.final可以用来修饰变量(不管是类的成员变量还是方法中的局部变量/形参。),表示该变量的值不能再改变(即常量)。(成员变量的初始值需要在定义的时候赋值或者在初始化块、构造器中指定。final类型的如果不赋值或指定的话,那么声明对象的时候系统无法给final型属性隐士初始化,就无法new出对象那么肯定会编译报错;
弄懂上面的知识点之后那么:可创建对象说明变量都已经全部有值了包括final的值也已给过,而使用普通方法要先创建对象才能,因此不可以在普通方法中对成员变量重新赋值,否则就不是仅仅一次赋值了;)
【3】.final还可以用来修饰方法,表示这个方法不能被子类重写。
注意事项:
final成员变量,必须由程序员显示初始化(赋值/初始化块/构造方法),系统不会对final成员进行隐式初始化。
final修饰局部变量时既可以在定义时候指定默认值,也可以不指定,在后面指定,但只能一次。
final修饰基本类型的时候 变量不能改变
final修饰引用类型变量,final只保证这个引用的地址不变,即一直引用同一对象。但这个对象的属性可以改变
10.return(1)返回方法指定类型的值(这个值总是确定的),也可以是对象;(2)结束整个方法,比如switch中用return就不用用break了
11.构造方法也是一种方法,构造方法名与类名相同,其作用是进行数据的初始化。所以没有返回值,也不需要返回值,他的结果就是给数据(类的属性)赋值。
12.类中不能放执行语句
13.super只能出现在子类中,用于访问父类成员,具有成员限制,比如无法访问父类中private的成员;
super表示父类对象
super.属性名
super.方法名
super(),父类构造方法
super()和this()调用构造方法只能写在构造方法中并且只能是第一句。一个指向父类对象一个指向子类对象。
××因为java中,创建某类的对象或者创建该类子类的对象时该类的构造方法总会执行,所以子类创建构造方法的时候会首先执行父类构造方法;××
1.子类不调用父类构造方法系统将默认调用父类无参构造方法//假如父类有点话
2.子类调用了父类构造方法,则不再默认调用父类无参构造方法
3.子类构造方法调用了自己其他构造方法,那么在被调用的构造方法中遵顼以上两个原则

14.不能拿空的变量(包括引用型)或常量名字进行运算操作,只有名字对应的数据才能进行操作;

15.重载和重写知识点

重载:要求方法名相同,参数列表不同。同一类中如果方法名和参数列表相同会被认为是同一个方法会报错,一个方法不允许声明两次;

重写:要求发生在子类对父类之间,由子类重写父类;方法名和参数列表要相同,返回值类型也要相同(或其子类),访问权限不能小于被重写的方法;必须满足这些条件才能成为重写。

同一个类中不能同时存在两个方法名相同,且参数列表完全相同的方法。即使是重写也是把从父类继承来的方法覆盖掉,也不是存在两个方法;重写的时候返回值类型必须与被重写的相同或是其子类,否则就不是重写,相当于是对子类中的继承来自父类的方法的重载,而重载是不允许有相同的参数列表的,所以会报错。(而在子类中写一个与父类方法名相同但是参数不同的方法是不报错的,相当于是对子类中继承来自父类相应方法的重载);

15.对象的转型
发生在存在继承关系的类的对象之间;
(1)向上转型
子类到父类的转型称为向上转型;语法:父类型  变量名=new子类型();
向上转型子类特有属性参数不会丢失,再转回来还可以使用;
(2)向下转型
父类到子类的转型成为向下转型;语法:子类型  变量名=(子类型)子类变量名;

向下转型可以通过intanceof判断是否是真实子类型;

语法:对象 intanceof  类型;对象和类型必须有上下级继承关系;

16.要给对象数组中添加新成员要通过new的方式添加,不new就用相应下标的数组元素给对象属性赋值会出现空指针异常,因为此时数组的那个位置现在的值是null,无法调用对象的属性。