欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Day4 Java学习日记

程序员文章站 2022-07-14 19:49:13
...

Day4 2019.11.4

面向接口编程

  • 开发系统时,主体构架使用接口,接口构成系统的骨架
  • 这样就可以通过更换接口的实现类来更换系统的实现

例子

1.Introduceable.java

访问权限控制

  • public
    • 类内可以访问
  • protected
  • default(no modifier)
  • private

Object类和String类

比较两个数的值

  • == 引用类型比较的是地址
  • equals(自动生成) 内容比较

字符符串转数字

如果您要将输入的字符串转换为整型、浮点数等等数据类型,您可以使用以下各包装类别所提供的各个静态剖析方法:

  • Byte.parseByte(字符串) 将字符串剖析为位元
  • Short.parseShort(字符串) 将字符串剖析为short整型
  • Integer.parseInt(字符串) 将字符串剖析为integer整型
  • Long.parseLong(字符串) 将字符串剖析为long整型
  • Float.parseFloat(字符串) 将字符串剖析为float浮点数
  • Double.parseDouble(字符串) 将字符串剖析为double浮点数

注意

如果指定的字符串无法剖析为指定的数据类型数值,则会发生NumberFormatException异常。

Character字符包装类的常用方法

  • static boolean isDigit(char ch)
  • 确定指定字符是否为数字
  • static boolean isLetter(char ch)
  • 确定指定字符是否为字母。
  • static char toLowerCase(char ch)
  • 使用来自 UnicodeData 文件的大小写映射信息将字符参数转换为小写。
  • static char toUpperCase(char ch)
  • 使用来自 UnicodeData 文件的大小写映射信息将字符参数转换为大写。
  • static Character valueOf(char c)
  • 返回一个表示指定 char 值的 Character 实例。

String类

推荐使用equals比较string类型的 不推荐使用==

  • Java中为了给String对象提高效率,所以就为String类提供了字符串池。在StringTest1中就使用了串池。当你重新声明一个String型变量为abc时,将使用串池里原来的那个abc,而不重新分配内存。在str3和str4中使用了普通对象的声明方式,即new关键字,系统将会为str3和str4各分配一块内存。

代码如下:

public class StringTest1{   
public static void main(String[] args) {      
 String str1 = "abc";      
 String str2 = "abc";      
 System.out.println(str1 == str2); 
 String str3 = new String(“abc");      
 String str4 = new String(“abc"); 
 System.out.println(str1 == str3);      
 System.out.println(str3 == str4); 
   }
 } 

string、stringBuilder与stringBuffer区别

  • 字符修改上的区别
  • string:不可变字符序列
  • stringBuffer 可变字符序列、效率低、线程安全
  • stringBuilder 可变字符序列、效率高、线程不安全用(更多使用)
  • 初始化上的区别
  • String可以赋空值,后者不行
  • (1)如果要操作少量的数据使用String
  • (2)多线程操作字符串缓冲区下操作大量数据用StringBuffer
  • (3)单线程操作字符串缓冲区下操作大量数据用StringBuilder

date类(日期转换)

  • 日期格式化输出 SimpleDateFormat
  • java.text.SimpleDateFormat sdf =new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);
  • (date -> text)

代码

DateTest.java
public class DateTest {

	public static void main(String[] args) {
		//java.util.Date utilDate;
		//java.sql.Date  sqlDate;

		//得到系统当前时间日期
		java.util.Date utilDate =new Date();
		System.out.println(utilDate);
		//得到日期格式化类
		java.text.SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd HH:mm:ss");
		String strDate=sdf.format(utilDate); //完成将java.util.Date转成字符串
		System.out.println(strDate);
		
		String sDate="2019年11月04 16:12:01";
		java.util.Date strToDate=null;
		try {
			//用日期格式化类将字符串转java.util.Date
			strToDate=sdf.parse(sDate);
			System.out.println(strToDate);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//java.util.Date utilDate;
		long longDate=strToDate.getTime();
		System.out.println(longDate);
				
		//将java.sql.Date转java.util.Date
		java.sql.Date d=new java.sql.Date(longDate);
		//java.util.Date转java.sql.Date
		java.util.Date dd=new java.util.Date(d.getTime());
		
	}

}

运行结果

Tue Nov 05 08:49:26 CST 2019
2019年11月05 08:49:26
Mon Nov 04 16:12:01 CST 2019
1572855121000
2019-11-04
Mon Nov 04 16:12:01 CST 2019