Java——08——关键字的使用

一:package

在这里插入图片描述

在这里插入图片描述

二:import关键字

在这里插入图片描述

自定义类要导包 不然会报错

package com.xx.study;

import java.util.HashMap;

public class Person {
	
	public static void main(String[] args) {
		HashMap map =new HashMap();
	}
	
}

三:super

1.super调用属性和方法

在这里插入图片描述当属性重名是,super调用的是父类的,this先找子类的
在这里插入图片描述
Person.java

package com.xx.study;

public class Person {
	String name;
	int age;
	int id=1001;//身份证号
	public Person() {}
	public Person(String name,int age) {
		this.name=name;
		this.age=age;
	}
	public void eat() {
		System.out.println("吃饭");
	}
	public void sleep(int time) {
		System.out.println("睡觉"+time+"小时");
	}
}
	

Student.java

package com.xx.study;

public class Student extends Person {
	String major;
	//和父类都有id,内存中两个id,属性和方法不一样,方法会覆盖,属性不会
    int id=1002;//学号
	public Student() {
	}

	public Student(String major) {
		this.major = major;
	}

	public void study() {
		System.out.println("学习java");
	}

	// 对父类的eat方法重写
	public void eat() {
		System.out.println("吃减脂餐");
	}
	public void show() {
		//System.out.println(name+"年龄是"+age);
		//可以用this调用也可以用super,
		System.out.println(this.name+"年龄是"+super.age);
		System.out.println(id);
		System.out.println(this.id);//调用的是子类的id
		System.out.println(super.id);//调用的是父类的id
	}
}

SuperTest.java

package com.xx.study;

public class SuperTest {
   public static void main(String[] args) {
	Student s=new Student();
	s.show();
}
}

2.super调用构造器

在这里插入图片描述4.4 在构造器的首行,没有显示的声明“this(形参列表)”或super(形参列表)”,则默认调用的是父类中空参的构造器,默认有一个super()

Person.java

package com.xx.study;

public class Person {
	String name;
	int age;
	int id=1001;//身份证号
	public Person() {
		System.out.println("测试在子类构造器中不声明this,或super,默认调用super()");
	}
	public Person(String name,int age) {
		this.name=name;
		this.age=age;
	}
	public void eat() {
		System.out.println("吃饭");
	}
	public void sleep(int time) {
		System.out.println("睡觉"+time+"小时");
	}
}
	

Student.java

package com.xx.study;

public class Student extends Person {
	String major;
	//和父类都有id,内存中两个id,属性和方法不一样,方法会覆盖,属性不会
    int id=1002;//学号
	public Student() {
	}

	public Student(String major) {
		//super();默认有
		this.major = major;
	}
	public Student(String name,int age,String major) {
		//this.name=name;
		//this.age=age;
	    super(name,age);//调用父类的构造器  ctrl+鼠标左键
	    this.major=major;
	}

	public void study() {
		System.out.println("学习java");
	}

	// 对父类的eat方法重写
	public void eat() {
		System.out.println("吃减脂餐");
	}
	public void show() {
		//System.out.println(name+"年龄是"+age);
		//可以用this调用也可以用super,
		System.out.println(this.name+"年龄是"+super.age);
		System.out.println(id);
		System.out.println(this.id);//调用的是子类的id
		System.out.println(super.id);//调用的是父类的id
		this.eat();
		super.eat();
	}
}

SuperTest.java

package com.xx.study;

public class SuperTest {
   public static void main(String[] args) {
	Student s=new Student();
	s.show();
	Student s1=new Student("Jack马",55,"阿里");
	s1.show();
	System.out.println("********************");
	Student s2=new Student();
	s2.show();
}
}

四:instanceof

在这里插入图片描述

在这里插入图片描述

五:static

1

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

package com.xx.study1030;

public class StaticTest {
	public static void main(String[] args) {
		Chinese c1 = new Chinese();
		c1.name = "马化腾";
		c1.age = 20;
		Chinese c2 = new Chinese();
		c2.name = "马云";
		c2.age = 50;
		c1.nation = "中国";
		System.out.println(c2.nation);
	}
}

class Chinese {
	String name;
	int age;
	static String nation;
}

2.类变量和实例变量内存解析

在这里插入图片描述

3.static修饰方法

在这里插入图片描述原因在于其生命周期:先是类的加载,静态结构也跟着加载到内存当中,创建对象后对象出生,非静态结构加载,对象消亡,非静态结构就不能调用了,最后类消亡,此时静态结构也消亡
结论:静态结构跟着类加载消亡,非静态结构是跟着对象加载消亡,因此早出生的不能调晚出生的,晚出生的可以调早出生的

package com.xx.study1030;

public class StaticTest {
	public static void main(String[] args) {
		Chinese c1 = new Chinese();
		c1.name = "马化腾";
		c1.age = 20;
		Chinese c2 = new Chinese();
		c2.name = "马云";
		c2.age = 50;
		c1.nation = "中国";
		System.out.println(c2.nation);
		c1.eat();
		//报错 Chinese.eat();
		//静态方法可以用类调用
		Chinese.show();
	}
}

class Chinese {
	String name;
	int age;
	static String nation;
	
	public void eat() {
		System.out.println("吃米饭");
		//调用非静态结构
		//谁调用eat谁就是this,就输出谁的name,这个谁指的对象
		this.info();
		//调用静态结构
		walk();
		//nation前面省略的是类Chinese Chinese.nation
		System.out.println("nation:"+nation);
	}
	//随着类的加载而加载
	public static void show() {
		//只能调用静态方法或属性 eat();
		System.out.println("我是静态方法");
		//类调用,不是this调用
		System.out.println(Chinese.nation);
		//省略
		System.out.println(nation);
		walk();
	}
	public static void walk() {
		System.out.println("走路");
	}
	public void info() {
		System.out.println(name);
	}

}

4.开发中如何确定一个属性是否需要声明static

属性是可以被多个对象所共享的,不会随着对象的不同而不同的
类中的常量也常常声明为static

5.开发中如何确定一个方法是否需要声明static

操作静态属性的方法,通常设置为static
工具类中的方法,习惯上声明为static,这样就不用了new对象了,直接用类调用 例如:Math,Arrays,Collection

6.static关键字的应用

1.

package com.xx.study1102;

public class CircleTest {
	public static void main(String[] args) {
		   Circle c1=new Circle();
		   Circle c2=new Circle();
		   Circle c3=new Circle(3.4);
		   System.out.println("c1的id:"+c1.getId());
		   System.out.println("c1的id:"+c2.getId());
		   System.out.println("创建的圆的个数"+Circle.getTotal());
		   
	}
	

   
}
class Circle{
	private double radius;
	private int id;
	//构造器
	public Circle() {
		id=init++;
		total++;
	}
	public Circle(double radius) {
		/*用this()调用构造器
		id=init++;
		totao99;*/
		this();
		this.radius=radius;
		
	}
	public double getRadius() {
		return radius;
	}
	public void setRadius(double radius) {
		this.radius = radius;
	}
	public int getId() {
		return id;
	}
    //属性是static 属性的方法也是static
	public static int getTotal() {
		return total;
	}

	private static int total;//记录创建圆的个数
	private static int init=1001;//被所有对象共享
	public double findArea() {
    return 3.14*radius*radius;
}
}

2.

在这里插入图片描述

package com.xx.study1102;

public class Account {
	private int id;
	private String pwd;
	private double balance;
	private static double interesRate;
	private static double minMoney = 1.0;
	private static int init = 1001;// 自动生成id值
    
	public Account() {
		id=init++;
	}
	public Account(String pwd,double balance) {
		id=init++;
		this.pwd=pwd;
		this.balance=balance;
	}
	public String getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

	public static double getInteresRate() {
		return interesRate;
	}

	public static void setInteresRate(double interesRate) {
		Account.interesRate = interesRate;
	}

	public static double getMinMoney() {
		return minMoney;
	}

	public static void setMinMoney(double minMoney) {
		Account.minMoney = minMoney;
	}

	public int getId() {
		return id;
	}

	public double getBalance() {
		return balance;
	}
	//Alt+shift+s选择Generate toString()
	/*
	 在Java里面所有的类都有一个共同的父类Object,
	 不管你愿不愿意都得继承他(默认继承,不用加extends)。
	 那么我们今天要说的toString方法就是存在于Object里面的一个方法,
	 换而言之,所有的类都会具有这个方法。
	 */
	@Override
	public String toString() {
		return "Account [id=" + id + ", pwd=" + pwd + ", balance=" + balance + "]";
	}
    
}

六:final

在这里插入图片描述

package com.xx.study1102;

public class FinalTest {
	//常量习惯写成大写
	final int WIDTH=0;
public void show() {
	final int num=10;//常量
}
public void show(final int num) {
	//num=20; 编译不通过 在这个方法内只能调用,不能赋值
	System.out.println(num);
}
public static void main(String[] args) {
	FinalTest test=new FinalTest();
	test.show(10);
}
}

1.final面试题

在这里插入图片描述
return ++x是错误的,这个是先++,再赋值,return x+1是可以的。

2.

在这里插入图片描述属性是可以变的,对象不能变,所以o=new Other()错了,o.i++是对的

3.五个小问题

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值