20150731
一.String:
1.声明:
- 直接声明:String s1 = “abc”;
- 利用构造器:String s2 = new String(“abc”);
String s3 = new String(new byte[] {‘a’,’b’,’c’});
2.内存中指向:
解释:
1)简单类型,仅在栈内存存入内容即可。
引用数据类型,在栈内存中存入的是其内容在堆内存的地址。
2)
String s1 = "abc";
String s2 = s1; //这里是将s1在栈内存中存的地址赋给s2在栈内存地址
3.string相等问题
4.常用方法:
charAt()方法:查找指定位置的字符,从0数起。
substring()::对字符串进行截取,两种方式,从指定位置到最后或者从指定位置到指定位置。(注:包括开始字符,不包括结束字符)
trim():去除前导空格和尾部空格。(注意只能去除前后的,中间不能)
replace(old,new):替换字符串
二.Scanner类:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
三.小知识点:
1.传入的”可变参数”,只有最后一个参数才可以写为:
四.变量
- 成员变量:类内,方法外。
- 局部变量:方法内。
区别:
1.作用域:成员变量—->类内部都可以。
局部变量—->方法内部。
2.初始值:成员变量—–>系统会给成员一个初始值,基本类型是0,应用类型是null;
局部变量——>必须赋初始值
五.封装
1)private
2)set–{this. }和get–{return –}
3)条件限制
六.继承
1.修饰符作用范围
解释:
1.修饰符private:只能在本类中使用
2.不同包时:仅可以访问public和protecd,而不能访问default和private.
2.super:
1)
- 调用父类方法:格式–>super.方法名();
- 在构造器中使用:默认的第一行一定是super();
子类必须先调用父类的构造器,如果父类构造器有参数,则必须显示super(参数);
2)对象初始化的顺序:
父类的属性;
父类的构造器;
子类的属性;
子类的构造器;
//父类
public class Student {
private String name; //第一步:私有化属性
String sex = "女";
private int age;
int sonAge=20;
/*
* 构造器
* */
public Student(int dauage){
System.out.println("这是父类的构造器"+"这是父类的属性"+sonAge);
}
}
//子类
public class LingzhuoStudent extends Student {
int age=10;
public LingzhuoStudent(){
super(20); //必须先调用父类构造器,才能构造自己
System.out.println("这是子类构造器"+age);//如果是先初始化构造器那么age=0;
这里运行后可见先初始化属性
}
}
3.覆盖父类方法(复写)
1)要求:
1)方法名称相同
2)返回值类型相同
3)参数列表相同
4)访问修饰符不能比父类更严格
5)私有方法不能被重写
2)代码:
//父类方法:
protected void Study(){
System.out.println("学生会学习");
}
//子类方法:
@Override //表示下面的是复写
public void Study(){ //这样可以,但修饰符不能更严格。
System.out.println("领卓的学生会学习!");
}
3)快捷方式
source中的Override添加方法
4.方法重载
方法名相同,参数列表不同,与访问修饰符和返回值无关。
七.多态
- 父类的引用指向子类的对象,根据对象的不同,产生的结果不同。
Animal animal = new Animal();
Animal animal1 = new Dog(); //多态
animal.voice();
animal.voice();
- 强制类型转换:
八.封装类
1.这里讲述简单数据类型的封装类:
2.自动拆箱和自动装箱
3.Integer类:
parseInt方法:将字符串转成十进制形式
public static int parseInt(String s)
public static int parseInt(String s,int radix)
toBinaryString方法:返回字符串的二进制形式
static String toBinaryString(int i )- static String toHexString(int i)
- 其他方法:
九.静态和非静态
一)静态static:
1.修饰属性(叫类的属性),使用格式:类名.属性名;
修饰方法(叫类的方法),使用格式:方法.方法名();
2.注:
1)不能修饰局部,因为类一创建时就被加载,而局部变量不加载。
2)方法中只能调用此方法外静态的属性和方法。
3)static中不允许使用super和this。
二)非静态:
1.如果不创建实例对象,那么jvm不会给非静态成员域分配存储单元。
十.final
final:
修饰类:最终的类,不允许被继承。
修饰方法:不允许被覆盖。
修饰变量:不允许被修改,就成了常量。
public static final int EYE_NUM=2;
十一.Object类
(一)所有类默认的父类。
(二)toString方法:
1.该方法返回一个字符串,它的值等于:
getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
除非在此方法中重写toString方法
结果:
(三)hashCode方法:
1.返回该对象的哈希码值。哈希值即在内存中对象的地址,此值不会变。
2.演示:
(四)equals方法:
1.注意:当此方法被重写时,通常有必要重写 hashCode 方法,
以维护 hashCode 方法的常规协定,
该协定声明相等对象必须具有相等的哈希码。(我们常规可以不用重写hashcode)
2.演示:
测试结果: