ppt from 北大java程序设计
目录
注释:
快速输入代码:
Java数据类型
- 基本类型: 变量在栈,在“这里”
- 引用类型: 变量引用到堆,在“那里”
- double d = 3; Person p = new Person();
- 赋值时
- double d2 = d; 复制的是值
- Person p2 = p; 复制的是引用
基本运算符
短路(short-circuit)逻辑运算符
- && -- 第一个操作数为假则不判断第二个操作数
- || -- 第一个操作数为真则不判断第二个操作数
x=3,y=4,z=5;
!(x+y)+z-1&&y+z/2=1
表达式的类型转换
- int-》long-》float-》double
- 所有的byte, short, char 参与算术运算等转为in
JAVA中的equals和==
浅谈Java中的equals和== - Matrix海子 - 博客园 (cnblogs.com)
数组
- int[] a; ;double []b ; Mydate []c;
- int a[5]; //非法
- 数组是引用类型 int [ ] a = new int[5];
- 数组定义 与 为数组元素分配空间 分开进行
int []a = new int[3];
a[0] = 3;
a[1] = 9;
a[2] = 8;
MyDate []dates = new MyDate[3];
dates[0] = new MyDate(22, 7, 1964);
dates[1] = new MyDate(1, 1, 2000);
dates[2] = new MyDate(22, 12, 1964);
每个数组都有一个属性length指明它的长度,例如:a.length 指明数组a的 长度(元素个数);
Enhanced for语句可以方便地处理数组、集合中各元素
int[] ages = new int[10];
for ( int age : ages )
{
System.out.println( age );
}
复制数组
System.arraycopy方法提供了数组元素复制功能:
//源数组
int[] source = { 1, 2, 3, 4, 5, 6 };
// 目的数组
int []dest = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
// 复制源数组中从下标0开始的source.length个元素到
// 目的数组,从下标0的位置开始存储。
System.arraycopy( source, 0, dest, 0, source.Length );
多维数组
二维数组是数组的数组
int [][] t = new int [3][];
t[0] = new int[2];
t[1] = new int[4];
t[2] = new int[3];
int t1[][] = new int [][4]; //非法, 这与C++不同
类
构造方法:同理C++
this的使用
- 在方法及构造方法中,使用this来访问字段及方法
- 使用this解决局部变量(方法中的变量)或参数变量与域变 量同名的问题
-
Person( int age, String name ) { this.age = age; this.name = name; }
-
构造方法中,用this调用另一构造方法
-
Person( ) { this( 0, "" ); …… }
类的继承
这位写得太棒了!Java:类与继承 - Matrix海子 - 博客园 (cnblogs.com)
继承关系在UML图中,是用一个箭头来表示子类与父类的关系的。 相当于 is a
class Student extends Person {
String school;
int score;
boolean isGood(){ return score>80; }
//…
}
1.方法的继承
父类的非私有方法也可以被子类自动继承。如,Student自动继承Person的方 法sayHello和isOlderThan。
2.方法的覆盖(Override)(修改)
子类也可以重新定义与父类同名的方法,实现对父类方法的覆盖(Override)。
@Override //JDK1.5以后可以用这个注记来表示(不用也是可以的)
void sayHello(){
System.out.println("Hello! My name is " + name + ". My school is " + school );
}
//通过方法的覆盖,能够修改对象的同名方法的具体实现方法。
super的使用
1. 使用super访问父类的域和方法,正是由于继承,使用this可以访问父类的域和方法。但有时为了明确地指明父类的域和方法,就要用关键字super。当覆盖父类的同名方法的同时,又要调用父类的方法,就必须使用super。
void sayHello(){
super.sayHello();
System.out.println( "My school is " + school );
}
2.使用父类的构造方法 ,构造方法是不能继承的,可以用super来调用父类的构造方法。
Student(String name, int age, String school ){
super( name, age );
this.school = school;
}
static字段
- 静态字段最本质的特点是: 它们是类的字段,不属于任何一个对象实例。
- 它不保存在某个对象实例的内存区间中,而是保存在类的内存区域的公共存储单元。
- static块在执行main函数之前加载。
再次感叹,写的真好:Java中的static关键字解析 - Matrix海子 - 博客园 (cnblogs.com)
final字段
直接看这人的吧,讲得太好了:浅析Java中的final关键字 - Matrix海子 - 博客园 (cnblogs.com)
abstract字段
1.abstract类
- 凡是用abstract修饰符修饰的类被称为抽象类。 抽象类不能被实例化
2.abstract方法
- 被abstract所修饰的方法叫抽象方法,抽象方法的作用在为所有子类定义一个统一的 接口。对抽象方法只需声明,而不需实现。
- 抽象类中可以包含抽象方法,也可以不包含abstract方法。但是,一旦某个类中包含 了abstract方法,则这个类必须声明为abstract类。
- 抽象方法在子类中必须被实现,否则子类仍然是abstract的。
接口与抽象类
深入理解Java的接口和抽象类 - Matrix海子 - 博客园 (cnblogs.com)
JAVA内部类
Java内部类详解 - Matrix海子 - 博客园 (cnblogs.com)
关于父类引用指向子类对象(A a=new B())
关于父类引用指向子类对象(A a = New B();)的使用,理解向上转型_CoderGuHao的博客-CSDN博客