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 父类{
}
通过继承我们可以简化代码.但不利于后期维护