目录
一、构造方法
构造方法的作用是创建对象,给对象中的成员进行初始化
-
特点:方法名与类名相同;没有返回值类型(包括void);没有具体的返回值。
-
构造方法的重载
和方法的重载类似,只要他们的参数列表(形参个数或形参类型)不一样,就可以定义同名构造方法。
构造方法重载的注意事项:
如果我们没有给出构造方法,那么系统会给出一个无参构造方法;
如果我们给出了有参构造方法,系统则不会提供默认的无参构造方法。
例如以下的构造方法是正确的
public class Student { int age ; char sex ; String name ; Student(){ } Student(int age){ } Student(int age, char sex){ } }
二、创建对象
-
创建对象的步骤(Student s=new Student();示例)
(1):加载Student.class文件进内存 (2):在栈内存为s开辟空间 (3):在堆内存为学生对象开辟空间 (4):对学生对象的成员变量进行默认初始化 (5):对学生对象的成员变量进行显示初始化 (6):通过构造方法对学生对象的成员变量赋值 (7):学生对象初始化完毕,把对象地址赋值给s变量
-
案例1
定义一个长方形(Rectangle)类,定义求周长(length)和面积(area)的方法,然后定义一个测试类Test,进行测试。
Rectangle类:
public class Rectangle {
private double len;
private double width;
public Rectangle(double len, double width) {
this.len = len;
this.width = width;
}
public double getArea() {
return len * width;
}
public double getLength() {
return (2 * len + 2 * width);
}
public double getLen() {
return len;
}
public void setLen(int len) {
this.len = len;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
}
Test测试类:
public class Test {
public static void main(String[] args) {
Rectangle rectangle = new Rectangle(20.4, 19.1);
double area = rectangle.getArea();
System.out.println(area);
double length = rectangle.getLength();
System.out.println(length);
}
}
-
案例2
定义一个员工(Employee)类,自己分析出几个成员,然后给出成员变量,构造方法,getXxx()/setXxx()方法,以及一个显示所有成员信息的方法。并测试。
Employee类:
public class Employee {
private String name;
private int age;
private char sex;
public void printInformation() {
System.out.println("name:" + this.name);
System.out.println("age:" + this.age);
System.out.println("sex:" + this.sex);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public Employee(String name, int age, char sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
}
Test测试类:
public class Test3 {
public static void main(String[] args) {
Employee employee = new Employee("Alice",25,'女');
employee.printInformation();
}
}
三、static关键字
-
static关键字是什么?
我们可以从一个实例中来观察它的作用:
定义一个Person类,将nationality变量定义为static:
public class Person {
private String name;
static String nationality;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
写出测试类Test:
public class Test {
public static void main(String[] args) {
Person person1 = new Person("Alice");
Person person2 = new Person("Jack");
Person person3 = new Person("lilei");
person1.nationality="Amarican";
System.out.println(person1.nationality);
System.out.println(person2.nationality);
System.out.println(person3.nationality);
person3.nationality="Chinese";
System.out.println(person1.nationality);
System.out.println(person2.nationality);
System.out.println(person3.nationality);
}
}
该测试类的运行结果如下:
由此可见,static关键字修饰的变量类似于一个公共的容器,也就是它被所有的对象共享。
-
static关键字的特点
-
随着类的加载而加载,是先于对象存在的
-
被所有的对象共享
-
可以通过类名来调用
-
-
static关键字的注意事项
在静态的方法中是没有this关键字的;静态的方法只能访问静态的成员变量和静态的成员方法。
四、静态变量和成员变量
-
所属不同
静态变量属于类,所以也称为类变量
成员变量属于对象,所以也称为对象变量或者实例变量
-
内存中的位置不同
静态变量存储于方法区的静态区,JDK1.7之后静态变量存储在堆内存中
成员变量存储于堆内存
-
内存出现时间不同
静态变量随着类的加载而加载,随着类的消失而消失
成员变量随着对象的创建而存在,随着对象的消失而消失
-
调用不同
静态变量可以通过类名来调用,也可以通过对象调用,推荐使用雷鸣调用
成员变量只能通过对象名来调用
五、JDK帮助文档的使用
步骤:
-
找到JDK文档,打开
-
点击显示,找到索引,会出现输入框
-
查看要查找的类,例如Scanner
六、Math类的使用
-
Math类
Math类在java.lang下,所以我们在使用时不需要导包。
Math类中的random()方法可以用来获取随机数,范围是大于等于0.0且小于1.0
-
Math类的使用
例如需要获取1-100之间的随机数,可以对Math.random()稍加嵌套,就可以完成。
获取1-100随机数的代码如下:
public class Test4 { public static void main(String[] args) { int x=0; for (int i = 0; i < 10; i++) { System.out.print((int)(Math.random() * 100 + 1)+"\t"); } } }
取到的随机数: