JAVA常用关键字的知识

503 阅读4分钟

1.this关键字

this使用成员方法中|构造器中,区分同名变量的问题(局部和成员同名问题)this指代当前对象|当前调用方法的对象

public class Computer01 {
	public String brand;
	public double price;
	public String color;
	
	public Computer01(){
		System.out.println("空构造");
	}

	public Computer01(String brand,double price){
		this.brand=brand;
		this.price=price;
		System.out.println("带参2构造");
	}
	public Computer01(String brand,double price,String color){
		this(brand,price);
		this.color=color;
		System.out.println("带参3构造");
	}
	public void test(){
		String brand="哈哈";
		//this指代当前调用方法的对象  com.brand
		System.out.println(this.brand+"-->"+this.price+"-->"+color);
	}
}

注意:

1.不能使用this关键字进行构造器之间的额相互调用

2.this和static不能同时调用

3.如果出现同名的成员和局部变量的问题,如果想要指代成员,必须使用this

4.如果没有出现同名问题,只有成员变量,相当于省略的this

2.static关键字

1.static修饰的变量叫做静态变量或者类变量,只能修饰成员,不能修饰局部

2.使用方式:

  •  	1.类名.属性名|方法名();
    
  •  	2.对象.属性名|方法名();
    
public class StaticDemo01 {
   static int id=5;//静态变量
   int age =10;//成员变量
   
   public static void main(String[] args) {
   	System.out.println(id);
   	
   	System.out.println(StaticDemo01.id);
   	
   	StaticDemo01 sd =new StaticDemo01();
   	System.out.println(sd.id);
   	System.out.println(sd.age);
   	
   	sd.change();
   	System.out.println(id);
   	System.out.println(sd.age);
   	
   	String name="";
   	System.out.println(name);	
   }
   //成员方法
   public void change(){
   	id++;
   	age++;
   	StaticDemo01 sd =new StaticDemo01();
   	id++;
   	sd.age++;
   	System.out.println(id+"-->"+sd.age);
   }

静态的是属于类的,成员属于对象的

  • 类的所有对象公共类中静态的内容
  • 静态的内容是独一份的,在类中第一次加载就初始化
  • 在静态的内容中,可以直接使用静态内容,不能直接使用非静态内容,可以跟随对象使用
  • 在非静态的内容中,可以直接使用静态内容,可以直接使用非静态的内容

3.private关键字

在我们在编写程序的时有时候会考虑数据的安全问题,这时候我们会用到关键字private 私有的

  • private 修饰的内容,只能在当前类|本类中使用
  • 需要为私有的字段提供一对公共的访问方式 设置器setter 获取器getter
  • 私有的属性需要配合公共的访问方式->方法
public class Student01 {
	private String name;
	private int age;
	
	public Student01(){
		
	}
	public String getName(){
		return this.name;
	}
	
	public void setName(String name){
		this.name=name;
	}
	
	public  void setAge(int age){
		this.age=age;
		
	}
	public int getAge(){
		return this.age;
	}

}

上面的代码我们将student的两个属性用private进行了属性的私有的,进行了属性的封装.

当然隐藏的属性也要可以使用的, 这个适合需要为私有的字段提供一对公共的访问方式 设置器setter 获取器getter. 私有的属性需要配合公共的访问方式->方法

4.bolck块

block 块 {}

  • {} 定义在方法中-->局部代码块|普通语句块 执行时机:方法调用时
  • {} 定义在类中方法外 --> 构造块 执行时机:创建对象的时候
  • static{} 定义在类中方法外--> 静态块 执行时机: 类第一次加载时

{} 就是一个作用域

构造块中代码先于构造器代码执行,如果有多个构造块,从上倒下以此执行

static只执行一次,在类第一次加载后执行,如果存在多个静态块,从上到下依次执行

static main 构造块 构造器

5.gc

Garbage Collection-->垃圾回收机制

java程序会自动运行垃圾回收机制,定期进行内存垃圾的清理

System.gc() 通知垃圾回收机制回收垃圾,但是是否回收,什么时候回收,程序员无权控制垃圾回收机制

可以调用finalize方法来完成

6.继承

继承:子承父业

目的: 为了简化代码

  • 特点:
  •  子类一旦继承父类,就可以使用父类的内容
    
  •  单继承继承:一个子类只能继承一个父类,一个父类可以被多个子类继承,多实现
    
public class ExtendsDemo01 {
	public static void main(String[] args) {
		Teacher th=new Teacher();
		th.subject="java";
		th.teach();
		th.name="因为";
		th.age=17;
		
		Student s=new Student();
		s.hometown="杭州";
		s.study();
		s.name="马云";
		s.age=50;
		s.sleep();
		
	}
}

//父类
class Person{
	String name;
	int age;
	
	public void sleep(){
		System.out.println("休息");
	}
}

//子类  教师类
class Teacher extends Person{
	
	String subject;
	
	public Teacher() {
		// TODO Auto-generated constructor stub
	}
	
	public void teach(){
		System.out.println("每天上课,边讲课边说rap");
	}
	
	
}

//学生类
class Student extends Person{
	String hometown;
	
	public Student() {
		// TODO Auto-generated constructor stub
	}
	public void study(){
		System.out.println("学习敲代码,敲代码使我快乐~~~");
	}
	
}

学生类与教师类通过extends对于父类person继承了他的内容.

继承方式为下

class 父类{
    
}

class 子类  extends  父类{
    
}

通过继承我们可以简化代码.但不利于后期维护