1、this关键字的使用
当方法的局部变量和类的成员变量重名的时候,根据“就近原则”,优先使用局部变量。
如果需要访问本类当中的成员变量,则需要使用this.成员变量。
通过谁调用的方法,谁就是this。
2、传址与传值
public class Main {
int i=5;
void action(Main m){
i=m.i;
}
public static void main(String[] args) {
Main m=new Main();
Main m2=new Main();
m2.i=7;
m.action(m2);
System.out.println(m2.i);
System.out.println(m.i);
}
}
输出:7、7
对象作为参数传递的是地址。
3、类的封装
限定词 | 同一个类 | 同一个包 | 不同包子类 | 不同包非子类 |
---|---|---|---|---|
priviate | ✔ | |||
无限定词 | ✔ | ✔ | ||
protected | ✔ | ✔ | ✔ | |
public | ✔ | ✔ | ✔ | ✔ |
4、数据类型
标识符
在java语言中,标识符必须以字母、下划线_、美元符$开始的字符序列。
变量:一个数据类型包括数据类型和标记符两个部分。
如:int ans。
自动类型转换
当byte,short,char之间进行运算时,会先转换为整型然后进行运算,运算结果也为整型。
5、静态关键字Static
修饰成员变量
利用static来声明一个变量可以在多个实例间进行共享,这种变量称为类变量或静态变量。
故在方法中不能定义static变量,因为在方法中定义的局部变量被方法封装了起来,通过类名无法访问到。
修饰成员方法
同静态变量一样,被static修饰的成员方法也可通过类名进行访问。
对于本类当中的静态方法,可以省略类名称。
静态方法可以使用直接引用类的其他静态成员(包括变量和方法),但是不能直接使用非静态成员,先有的静态才有非静态。
6、基本数据类型的装箱与拆箱
八大基本数据类型与其对应包装类
基本数据类型 | 对应包装类 |
---|---|
bool | Boolean |
byte | Byte |
short | Short |
int | Integer |
char | Character |
long | Long |
double | Double |
float | Float |
装箱与拆箱
拆箱:对象转换成基本数值
装箱:基本数值转换成对象
7、继承
继承的特性
①子类拥有父类非 private 的属性、方法。
②子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
③子类可以用自己的方式实现父类的方法。
④Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 B 类继承 A 类,C 类继承 B 类,所以按照关系就是 B 类是 C 类的父类,A 类是 B 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
构造函数不能被继承!!!
final关键字
①修饰类:该类没有子类。
②修饰方法:该方法不能被子类重写,但可以被正常使用。
③修饰局部变量:只要在具体被使用之前进行赋值即可,一旦赋值,不能进行修改。
④基本数据类型:初始赋值后不能被修改
⑤引用数据类型:初始化之后不能在指向另一个对象,但对象的内容是可以变的;
super关键字
在构造方法中默认存在着super()作为第一语句。
super关键字调用父类的构造函数时,该语句必须要是子类构造函数中的第一个语句。
重写
定义:子类对从父类继承过来的方法进行改写。
注意点:
①子类方法的返回值必须小于等于父类方法的返回值。
②子类方法的权限必须大于等于父类方法的权限范围。
8、抽象类与抽象方法
抽象类:
①抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
②由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。故抽象类不能被final修饰。
抽象方法
①如果一个类包含抽象方法,那么该类必须是抽象类。
②任何子类必须重写父类全部的抽象方法,或者声明自身为抽象类。
9、接口
JDK7以前,接口中只能定义全局常量和抽象方法
//接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
public interface Inter {
public abstract void run();
public static final int maxn=100;
//全局常量 public static final可进行省略,可直接通过接口.调用
void eat();//一定为public abstract 故可进行省略
}
接口与类的区别:
①接口中所有的方法必须是抽象方法。
②接口中成员变量默认修饰符public static final,全为常量
③接口不是被类继承了,而是要被类实现。
④接口没有构造方法和实例对象
⑤接口支持多继承。
10、==与equals方法
java中所有的类都是Object类的子类,都有equals方法。而在Object中定义的equals方法都是进行地址值的比较.
但其中一些子类如String,Integer,Date等已经对继承过来的equals进行了重写(一般重写成比较成员值是否相同)。
StringBuffer没有对equals进行重写,比较的是地址。
==的比较
基本数据类型:比较值是否相同
引用数据类型:比较地址值是否相同
equals方法
引用类型:默认情况下,比较的是地址值,重写该方法后比较对象的成员变量值是否相同
字符串池与字符串的创建
String