类和对象
究其本质,类就是一段代码的名称,其中包括很多保存数据值的字段和操作这些值的方法。
3.1 定义类
我们定义一个Point类
public class Point {
public double x, y; //点坐标(x ,y)
public Point(double x, double y) { // 类的构造函数
this.x=x;
this.y=y;
}
public double distanceFromOrigin() { //类的方法
return Math.sqrt(x*x + y*y);
}
}
这个类的定义会保存在名为Point.java的文件中,然后编译成一个名为Point.class的文件,供Java程序和其他类使用。
3.2 创建对象
在工程中定义Point类后,Point在本工程代码项目成为一种新的数据类型。
可以用它创建对象并实例化它
----------第一种创建方式----------
Point p; //只是声明了以名为p的Point类型的对象,并不会创建它;
p =new Point(2,-4); //创建一个Point对象,值为(2,-4)
---------第二种创建方式----------
Point p = new Point(2, -4); //创建一个Point对象,值为(2,-4)
3.3 使用对象
Point p = new Point(2, 3); //创建一个对象
double x = p.x; //读取这个对象的一个字段
p.y = p.x * p.x; //设定一个字段的值
double d = p.distanceFromOrigin(); //访问这个对象的一个方法
3.4 对象字面量
一、字符串字面量
String类使用一串字符表示文本,在任何编程语言中处理文本字符串的能力都十分重要,在Java中字符串是对象。
String name = "David"; //把字符放在双引号(")中,就是定义一个字符串
System.out.println("Hello" + name);
字符串字面量不能包含注释,不支持把两行当成一行的任何接续字符,只能有一行
//不可行
String s = "This is Test, for you
to learn";
//正确
String s = "This is Test, for you" +
"to learn";
二、类型字面量
支持专用对象字面量句法的类型是Class类,Class类的实例表示一种Java数据类型,而且还包含所表示类型的元数据,使用Class对象字面量,在数据类型名称后加 .class
Class<?> typeInt = int.class;
Class<?> typeIntArray = int[].class;
Class<?> typePoint = Point.class;
三、null引用
null引用是一种特殊的字面量,引用不存在的值或者不引用任何值。
String s = null;
Point p = null;
3.5 lambda表达式
lambda表达式就是没有名称的函数,在Java中可以把它当成一个值,lambda表达式是在某个类中定义的匿名方法(开发者可能不知道具体是哪个类)
lambda表达式的句法如下:
(paramlist) -> { statements }
复杂一点点的实例:
ActionListener listener = (e) -> {
System.out.println("Event fired at: "+ e.getWhen());
System.out.println("Event command: " + e.getActionCommond());
};