JavaSE一周复习需要注意的知识点

数据类型转换

例题:请问以下哪个句子编译会出现失败?

short a = 5;
short b = 6;
short c;
c = a + b;
c = 5 + 6;
a += 5;

答:c = a + b 会出现失败,因为short byte char 类型的数据在进行计算时,会默认将计算结果转换为int类型,因此short类型的c不能接收int类型数据.

a += 5 赋值运算符隐含了强制类型转换,相当于a = (int) a + 5;

Scanner

思考:为什么Scanner能够接收System.in
Class Scanner 构造方法如下:
在这里插入图片描述
其中public Scanner(InputStream source)能够接收InputStream的对象

Class.System类中包含三个常量
在这里插入图片描述
其中public static final InputStream in 属于inputStream类型,因此可以被Scanner的构造方法接收.

方法重载与方法重写
方法重载(Overloading):在同一类中,以统一的方式处理不同类型数据的一种手段。

方法重写(Override):通过继承父类的方法,覆盖或扩充父类的方法。

重载定义:
方法名称相同,对参数类型,参数个数,返回值类型,以及访问修饰符都没有限制

重写定义:
方法名称,参数类型,参数个数,返回值类型,全部相同,并且被重写的方法不能拥有更严格的权限,即(private 不能重写为 public)

static关键字
思考:static关键字修饰的属性能否用private修饰

static修饰的属性可以用private修饰,但修饰后的属性无法通过类名直接从外部访问,因此一般通过getter方法获取属性(因为非静态方法可以调用静态属性)

与final修饰的变量不能改变的特性相比,就算static修饰的属性被private修饰,同样可以通过setter方法改变属性值

但是所有的实例化对象的静态属性都是唯一的

枚举(enum)
枚举定义:用于定义有限个数对象的结构,属于一种多例设计模式,但比多例设计模式更加简单
(多例设计模式在编译时不能知道对象是否存在, 而枚举可以在编译时就知道对象是否存在)

枚举类中定义的构造方法不能采用非私有化定义(多例设计模式及单例设计模式同样)

enum Color{
	RED,GREEM,BLUE //属性定义时使用大写字母,相当于多例设计模式中private static final 属性类型 属性名 的格式
}

enum同样属于一种类,因此可以继承接口,可以添加属性,添加方法

enum Color implements IMessage{
	//红色为对象创建时,用构造方法赋值属性
	RED("红色"),GREEN("绿色")},BLUE("蓝色") //枚举对象要写在首行
	
	private String title; //添加属性
	private Color(String title) { //构造方法赋值属性
		this.title = title;
	}
	
	public String toString() {
		return this.title;
	}
	
	@Override //重写接口中的抽象方法
	public String getMessage() {
		return this.title;
	}

一般枚举作为另一个类的属性

class Person{
	private enum Color;
	private String name;
	private int age;
}

enum与Enum的区别
1、enum:是从JDK1.5之后提供的一个关键字,用于定义枚举类
2、Enum:是一个抽象类,所有使用enum关键字定义的类都默认继承此类

public abstract class Enum<E extends Enum>extends Object implements Comparable, Serializable

单例设计模式与多例设计模式
单例设计模式:允许存在一个实例化对象
多例设计模式:允许多个实例化对象

二者都不通过外部实例化对象

关键点:构造方法私有化

单例设计模式(不考虑线程安全)分为懒汉式和饿汉式

//饿汉式:直接完成实例化对象,没有线程问题
class Singleton{
	private static final Singleton INSTANCE = new Singleton(); 
	private Singleton() {}
	public void print() {
		System.out.println("实例化对象");
	}
	
	//通过静态方法,外部类名获取实例化对象
	public static Singleton getInstance() {
		return INSTANCE;
	}
	
}

//懒汉式:在第一次使用的时候进行实例化对象处理
class SingletonLazy{
	private static SingletonLazy instance;
	private SingletonLazy() {}
	public static SingletonLazy getInstance() {
		if(instance == null) {
			instance = new SingletonLazy();
		}
		return instance;
	}
}

多例设计模式

class Color{
	private static final Color RED = new Color("红色");
	private static final Color GREEN = new Color("绿色");
	private static final Color BLUE = new Color("蓝色");
	private String title;
	private Color(String title) {
		this.title = title;
	}
	
	//静态方法用来提供实例化对象
	public static Color getInstance(String color) {
		switch (color) {
		case "red":
			return RED;
		case "green":
			return GREEN;
		case "blue":
			return BLUE;
		default:
			return null;
		}
	}
	
	public String toString() {
		return this.title;
	}
}

与枚举相比,编译时无法判断是否存在相符的实例化对象,可能会返回空
而枚举在编译时就可以判断是否存在相符的实例化对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值