构造方法 定义:方法名与类名相同,并且无返回值类型。 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变量进行赋值。