构造方法
定义:方法名与类名相同,并且无返回值类型。
1. 系统会自动为没有构造方法的类创建一个无参的构造方法。
2. 只要有了任意的构造方法,系统就不会在创建默认无参构造方法。
3. 构造方法只能在new的时候调用,其他时候不允许调用。
构造方法就是用来初始化对象。
this关键字
this代表当前类的实例,调用该方法或者该成员变量的对象。
this是被省略的,无论写不写,所有的成员变量和成员方法调用时都默认的加上this关键字。
this三大用处
1. 区分成员变量和局部变量
2. 调用其他方法和属性
3. 调用其他构造方法 this([args…]); 必须要放在构造方法的第一行。不允许相互调用
参考代码1
ublic class User {
int age;
String username="匿名";
// 没有任何构造方法的时候
// 系统会自动给你创建一个默认的无参的构造方法
// 如果由了任何的构造方法,系统都不会在创建默认的无参构造方法
public User(int iAge, String sUsername) {
// 系统默认生成的无参构造方法
age = iAge;
username = sUsername;
}
public User() {
age = 0;
username = "匿名";
}
public User(int iAge) {
age = iAge;
username = "匿名";
}
public void init() {
}
public void setData(int iAge) {
age = iAge;
}
}
package com.xykj;
public class Test {
public static void main(String[] args) {
User user = new User();// 调用User类的构造方法
System.out.println(user.age + " " + user.username);
}
}
参考代码2
package com.xykj2;
public class Car {
String color;
int speed;
String brand;
public Car() {
this.color = "黑色";
speed = 100;
}
public Car(int speed) {
// 调用其他构造方法 必须放在第一行
this();
this.speed = speed;
}
public Car(String brand, int speed) {
this(speed);
this.brand = brand;
}
// 构造方法中 不允许来回调用
// public Car(String a) {
// this("",1.0);
// }
//
// public Car(String b, double a) {
// this("a");
// }
}
package com.xykj2;
public class Test {
public static void main(String[] args) {
// User user = new User(10);
// User user2 = new User(15);
// User user3 = new User(20);
// System.out.println(user.age + ” ” + user2.age);
Car car = new Car();
System.out.println(car.color + " " + car.speed);
Car car2 = new Car(120);
System.out.println(car2.color + " " + car2.speed);
Car car3 = new Car("宝马", 240);
System.out.println(car3.brand + " " + car3.color + " " + car3.speed);
Person p = new Person("zhangsan", 100);
}
}
方法重载
方法名必须相同,方法参数不同(长度不同,类型不同),和方法权限,返回值无关。
1. public int max(int a,int b)
2. {
3. return a>b?a:b;
4. }
5. //普通方法重载,方法名相同,参数类型或参数列表长度不同
6. public long max(long a,long b)
7. {
8. return a>b?a:b;
9. }
10 构造方法的重载
private String name;
private String password;
//当初始化有多种情况发生时,我们经常需要去重载构造方法
public Example(String name) {
this.name = name;
}
public Example(String name, String passwrod) {
this.name = name;
final关键字
Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰飞抽象类,非抽象类成员方法和变量。
- final类不能被继承,没有子类,final类中的方法默认是final的
- final方法不能被子类的方法覆盖,但可以被继承
- final 去修饰变量,就是常量,只有第一次可以赋值,以后不能在赋值。
- 修饰基本数据类型,不能在改变值,修饰引用数据类型,地址不允许在改变。
- final修饰的所有的变量,命名规范都所有字母需要大写
- final不能用于修饰构造方法。
**static关键字**
static是Java中的静态修饰符,可以用来修饰成员变量,成员方法和代码块,他修饰的特点如下
- 静态方法和静态变量是属于某一个类,而不属于类的对象。
- 静态方法和静态变量的引用直接通过类名的引用
- 在景泰方法中不能调用非静态的方法和引用非静态的成员变量。反之,则可以。
- 静态变量在某种程度上与其他语言的全局变量相类似,如果不是私有的就可以在类的外部进行访问。
1.修饰变量:
类的所有对象共同拥有的一个属性,也称为类的变量。类变量在类加载的时候初始化,而且只被初始化一次。在程序中任何对象对静态变量做修改,其他对象看到的是修改后的值,static变量可以用类名直接访问,而不必需要对象。
2.修饰方法:
类的所有对象共同拥有的一个功能,称为静态方法。 静态方法也可以用类名直接访问,而不必须要对象。所以在静态方法里不能直接访问非静态变量和非静态方法。在static方法里不能出现this或者super等关键字。
3.修饰代码块:
用static去修饰类里的一个独立的代码块,称为静态代码块。静态代码块在类第一次被夹在的时候执行,而且只执行一次能够。静态代码块没有名字,因此不能显示调用,而只有在类加载的时候有虚拟机来调用。它主要用来完成一些初始化操作。
利用静态代码块可以对一些static变量进行赋值。