Java学习笔记12(包装类+toString+关键字static+main方法+设计模式)

news/2024/5/19 2:43:57 标签: 设计模式, java, , 多态, 反射

文章目录

  • 包装
  • toString
  • 关键字static
  • 单例 (Singleton)设计模式
    • 饿汉单例模式
    • 懒汉式
  • main方法

包装

针对八种基本定义相应的引用型—包装(封装
在这里插入图片描述
应用:

字符串转换成基本数据
通过包装的构造器实现:
int i = new Integer(“12”);
通过包装的parseXxx(String s)静态方法:
Float f = Float.parseFloat(“12.1”);

基本数据型转换成字符串
调用字符串重载的valueOf()方法:
String fstr = String.valueOf(2.34f);
更直接的方式:
String intStr = 5 + “”

toString

笔记:打印a对象就是打印a.toString(),
可以对toString()方法就行重写。

java">public class MyDate {
	/**
	 * 有参构造器
	 * @param year
	 * @param month
	 * @param day
	 */
	public MyDate(int year,int month,int day){
		this.year = year;
		this.month = month;
		this.day = day;
	}
	
	int year;//三个成员变量
	int month;
	int day;
	
	@Override
	public boolean equals(Object obj) {
		int flag = 1;
		
		if(obj instanceof MyDate){
			MyDate md = (MyDate) obj;
			flag = 0;
			
			if(this.year != md.year){
				flag += 1;
			}
			
			if(this.month != md.month){
				flag += 1;
			}
			
			if(this.day != md.day){
				flag += 1;
			}
		}
		
		if(flag == 0){
			return true;
		}else{
			return false;
		}
	}
	
//	@Override
//	public String toString() {
//		String str = this.year + "-" + this.month + "-" + this.day;
//		return str;
//	}
	
	public static void main(String[] args) {
		MyDate m = new MyDate(2020,03,30);//有参构造,这个()里面要填参数
		System.out.println(m);
		System.out.println(m.toString());
		
	}
}

打印结果为:

day08.MyDate@279f2327

day08.MyDate@279f2327

把代码中注释去掉,则打印结果为:

2020-3-30
2020-3-30

关键字static

访问对象的时候,我们需要实例化,然后这样做

对象名.属性

对于非静态的方法和变量,需要先创建的实例对象后才可使用,而静态方法在使用前不用创建任何对象。

那我们也可以?????
在设计时,分析哪些属性不因对象的不同而改变,将这些属性设置为属性。相应的方法设置为方法。

名.属性

如果想让一个的所有实例共享数据,就用变量!
这就是静态变量:

静态方法:

名.方法名
java">public class Chinese {
	static String country;//斜体的,变量。static修饰,静态变量
	String name;//实例变量
	int age;//实例变量
	
	public static void test() {
		System.out.println("这是一个静态方法");
	}
	
	
	public static void main(String[] args) {
		Chinese.test();//不用实例化,也能调用
		Chinese.country= "中国";//不用实例化,也能调用
		System.out.println(Chinese.country);
	}
}

在Java中,可用static修饰属性、方法、代码块、内部
被修饰后的成员具备以下特点:
1随着的加载而加载
2优先于对象存在
3修饰的成员,被所有对象所共享
4访问权限允许时,可不创建对象,直接被调用

因为不需要实例就可以访问static方法,因此static方法内部不能有this。(也不能有super ? YES!)

单例 (Singleton)设计模式

设计模式就是编程套路
单例,就是一个实例化对象。
适用:一般都是new对象太费劲!或者是频繁的new新对象没有意义

饿汉单例模式

java">package day08;
/**
 * 饿汉单例模式
 * @author jkjkjk
 *
 */
public class Single {
	//构造方法private
	private Single() {
		
	}
	//只new一次
	private static Single single = new Single();
	
	public static Single getInstancd() {
		return single;
	}
	
	public static void main(String[] args) {
//		Single s = new Single();不可行
		Single s1 = Single.getInstancd();
		Single s2 = Single.getInstancd();
		Single s3 = Single.getInstancd();
		Single s4 = Single.getInstancd();
		System.out.println(s1);
		System.out.println(s2);
		System.out.println(s3);
		System.out.println(s4);
	}

}

打印结果:
day08.Single@279f2327
day08.Single@279f2327
day08.Single@279f2327
day08.Single@279f2327

因为Single.getInstancd()是指向single.

懒汉式

最开始,对象是null,直到有第一个人调用我,才new一个对象,之后都用这个对象了

java">package day08;

public class Single1 {
	//先私有化构造方法,让外边不能直接new对象
	private Single1(){
			
	}
		
	private static Single1 s1 = null;
		
	public static Single1 getInstance() {
		if(s1 == null) {//如果是空,那么实例化
			s1 = new Single1();
		}
			
		return s1;
	}	
	public static void main(String[] args) {
//		Single s = new Single();
		Single1 s1 = Single1.getInstance();
		Single1 s2 = Single1.getInstance();
		Single1 s3 = Single1.getInstance();
		Single1 s4 = Single1.getInstance();
		System.out.println(s1);
		System.out.println(s2);
		System.out.println(s3);
		System.out.println(s4);
	}

}

打印结果:
day08.Single1@279f2327
day08.Single1@279f2327
day08.Single1@279f2327
day08.Single1@279f2327

饿汉和蓝汉的区别就是什么时候new对象。

main方法

在这里插入图片描述

public 公用的
static 静态的
void 没有返回值的
main方法名
形参是字符串数组,多个

由于java虚拟机需要调用的main()方法,所以该方法的访问权限必须是public,又因为java虚拟机在执行main()方法时不必创建对象,所以该方法必须是static的,该方法接收一个String型的数组参数,该数组中保存执行java命令时传递给所运行的的参数。

子曰:温故而知新!


http://www.niftyadmin.cn/n/1707968.html

相关文章

trident_Storm Trident拓扑中的错误处理

trident这篇文章总结了我在设计Storm Trident拓扑时当前的错误处理方法。 我在这里只关注代码设计,而不关注监督或冗余之类的部署良好实践。 由于Storm的实时流性质,当面对大多数错误时,我们最终将不得不移至下一个数据段。 在这种情况下&…

linux平台上备份win系统吗,windows、Linux/Unix及厂商OEM系统备份的对比

windows系统备份电脑在Windows下常用的Ghost类备份系统,需要DOS或者WinPE下操作(现在有很多一键GHOST的壳,所以,进入DOS或者PE不再是难点,也不需要用户有多少准备),缺点是,恢复的时候目标分区不能小于原始备…

junit5_在JUnit中测试预期的异常

junit5单元测试用于验证一段代码是否按照开发人员的预期运行。 有时,这意味着检查代码是否也会引发预期的异常。 JUnit是Java单元测试的标准,并提供了几种验证抛出异常的机制。 本文探讨了这些选项及其相对优点。以下面的简单代码段为例。 除了编写测试以…

Java学习笔记13(理解初始化块和abstract)

文章目录初始化块非静态代码块:没有static修饰的代码块静态代码块:用static 修饰的代码块匿名类(静态代码块的作用)关键字final抽象类模板方法设计模式(TemplateMethod)初始化块 代码块: { xxxx } 初始化块是对构造器…

mockito_使用Mockito测试Spring组件

mockito我认为,能够对弹簧组件进行单元测试而无需使用临时测试配置加载完整的弹簧上下文,这是一个很大的优势,因为它干净,易于维护,编写速度更快,更改平滑。 实现此目标的一种方法是使用Mockito并告诉他用M…

Java学习笔记14(接口+工厂模式)

文章目录接口接口的特点:**为什么要接口**工厂模式接口 Java不支持多重继承。有了接口,就可以得到多重继承的效果。 接口(interface)是抽象方法和常量值的定义的集合。 从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量…

activiti_在Activiti中执行自定义查询

activiti(这可能最终会出现在Activiti 5.15版本的用户指南中,但是我已经想分享它了) Activiti API允许使用高级API与数据库进行交互。 例如,对于检索数据,查询API和本机查询API的用法很强大。 但是,对于某些用例,它们可…

Java学习笔记15(详细代码讲解异常)

文章目录异常异常概述异常处理机制使用 try…catch…finally 处理异常声明抛出异常人工抛出异常创建用户自定义异常类异常 RuntimeException 错误的类型转换 数组下标越界 空指针访问IOExeption 从一个不存在的文件中读取数据**FileNotFoundException** 越过文件结尾继续读取…