第四周学习笔记总结(类相关)

目录

1.常用类之Object (重点)

1.1常用的方法:

==和equals()方法区别?

1.2 Scanner类提供一个判断功能

1.2.1 构造方法:

1.2.2 成员方法:

1.2.3 相关代码 

2. String类

2.1构造方法:

2.2 面试题:

1.数组中没有length(),字符串有没有length(),集合中没有有length()?

2. String s = new String("hello") ; 和String s = "hello" ; 有什么区别?分别创建了几个对象?

​​​2.3 String类相关的获取功能

2.4 描述String的compareTo(String str)字典顺序比较的逻辑

2.5 String的判断/替换/去除两端空格 (了解)相关功能

2.5.1 判断功能: 

2.5.2 替换功能:

2.6 String类的转换功能

2.7 面试题:

3. StringBuffer类(字符串缓冲区,线程安全的类)

3.1 构造方法:

3.2 类型转换(重点)

3.3 StringBuffer的追加和插入

3.4 StringBuufer的获取功能

3.5 StringBuffer的删除

3.6 StringBuffer的替换功能:

3.7 StringBuffer的截取功能:

3.8 StringBuffer的特有功能:

4. StringBuffere/StringBuilder和String有什么区别?

4.1 StringBuffer和数组的区别

4.2 String和StringBuffer的相互转换

5.包装类

5.1 与基本类型的对应关系

 5.2 Number

5.3 Integer

5.3.1  Integer的构造方法: 

5.3.2 常用方法:

5.3.3 将int类型数据赋值给Integer类型变量,它的内部缓存IntegerCache完成了什么事情?

5.3.4  int和String之间的相互转换

练习:https://blog.csdn.net/weixin_61215132/article/details/127948927

6. jdk5以后的新特性:自动拆装箱     

7. System类:不能实例化

三个成员变量 ---静态常量     

7.1 成员方法

8. BigDecimal

8.1 创建对象

8.2 常用方法

练习:​​​​​​https://blog.csdn.net/weixin_61215132/article/details/127949324

9. Random:伪随机数生成器

9.1 构造方法:    

9.2 成员方法:

9.3 使用Random类产生随机数

10.Math类

10.1 常用Math类方法

练习:https://blog.csdn.net/weixin_61215132/article/details/127952077

11. java.util.Calendar :日历类--->是一个抽象类,不能new

11.1 Calendar提供静态的字段(成员变量--->静态常量)  

 11.2 Calendar提供成员方法: 

练习: https://blog.csdn.net/weixin_61215132/article/details/127952960

12. java.util.Date 时间类 日期 (精确到毫秒的日期-重点)

12.1 构造方法:

12.2 成员方法:

12.3 常用时间缩写:

练习:https://blog.csdn.net/weixin_61215132/article/details/127953046

13. SimpleDateFormat类

13.1 日期和时间格式由日期和时间模式字符串指定,字母与日期时间的对应关系如下:

 13.2 构造函数

13.3 日期转换

相关代码:https://blog.csdn.net/weixin_61215132/article/details/127948352

14. 面试题: final,finalize,finally有什么区别?

15.获取类的字节码文件的方式:


1.常用类之Object (重点)

在java.lang.Object,Object是类结构层次的根类(父类、超类),所有的类都默认继承自Object子类。所有对象(包括数组)都实现这个类的方法。

1.1常用的方法:​​​​​​​

1)public int hashCode():获取对象的hash码值--->支持散列表(支持key-value键值对)

hashCode()(哈希算法 hash table)"理解为地址值",不是真实地址值,每一个对象的hash码值不同

2)String toString():返回对象的字符串表示形式,结果应该是一个更容易让人读懂的信息表达式(建议所有的子类都覆盖这个方法)几乎Java所有类都会重写toString()方法
idea快捷键:alt+ins---->toString
3)Class c = student.getClass() ;//获取这个类的字节码文件对象  class com.qf.object_01.Student
Class---->public String getName(): 获取字节码对象中的全限定名称 (包名.类名)

4)public boolean equals(Object obj):指定其他对象与此对象是"相等"

==和equals()方法区别?

  • ==:比较两个基本类型,数据值是否相等

  • ==:连接是两个引用类型,比较的是地址值是否相等

  • 而Object的equals方法,默认比较的是两个引用类型的地址值是否相等,建议子类需要重写这个equals(),重写之后比较的是两个对象的成员信息是否相同!(Java中所有类都会重写!)    ,重写equals方法,必须同时重写hashCode()方法

  • 重写equals:比较每一个对象的成员信息是否相同 如果一样,还要比较每一个成员信息 hashCode()哈希码值是否一样,如果都相同,系统认为这个两个是一样的!

  • idea快捷键:   alt+ins--->equals and hashcode方法

//看程序,写结果,描述为什么(先做明天说,看看jdk的API里面的Integer的构造方法)
        Integer i1 = 127 ;
        Integer i2 = 127 ;
        System.out.println(i1==i2) ;//true
        System.out.println(i1.equals(i2)) ;//true

        Integer i3 = 127 ;
        Integer i4 = new Integer(127) ;
        System.out.println(i3==i4) ;//false
        System.out.println(i3.equals(i4)) ;//true

        Integer i5 = 128 ;
        Integer i6 = 128 ;
        System.out.println(i5==i6) ;//false
        System.out.println(i5.equals(i6)) ;//true

        Integer i7 =  new Integer(128) ;
        Integer i8 =  new Integer(128) ;
        System.out.println(i7==i8) ;//false
        System.out.println(i7.equals(i8)) ;//true

1.int与Integer、new Integer()进行==比较时,结果永远为true
2.Integer与new Integer()进行==比较时,结果永远为false
3.Integer与Integer进行==比较时,看范围;在大于等于-128小于等于127的范围内为              true,在此范围外为false

5)protected Object clone():创建并返回此对象的一个副本。

protected Object clone() throws CloneNotSupportedException

创建对象并返回它的"副本" 方法里面本身就会带有CloneNotSupportedException:克隆不支持的异常(当要对某个Object的类进行克隆 如果这个类不能实现cloneable接口,那么就会出现这个异常)

1.2 Scanner类提供一个判断功能

1.2.1 构造方法:

public Scanner(InputStream source) 创建键盘录入对象

      创建一个文本扫描器
              Scanner 对象名 = new Scanner(System.in) ;
              --->System类---变量名
              public static final InputStream in

1.2.2 成员方法:

nextXXX():获取功能
   public int nextInt() :录入int类型
   public String nextLine() ;录入String类型

判断功能:
      public boolean hasNextInt():判断录入的下一个数据是否为int类型,是,返回true,否则false
      public boolean hasNextLine():判断录入的下一个数据为一行内容

键盘录入的时候
           先录入int,在录入String ----nextLine() ,这块会出现被漏掉("回车符号")
           解决方案:
           1)在第一个录入int之后,重新创建一个新的键盘录入对象Scanner ,然后在使用nextLine()
           2)再录入String---- String next()

1.2.3 相关代码 

import java.io.InputStream;
import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {

        //需要输入流(io流后面讲)
        InputStream input = System.in ;

        //public Scanner(InputStream source)
        //创建文本扫描器对象
        Scanner sc = new Scanner(input) ;   //形式参数需要输入流--->System.in
        System.out.println("请输入一个数据:");

        //boolean hasNextXXX():判断录入的下一个是否为XXX类型
        if(sc.hasNextInt()){
            //录入下一个为int类型
            int number = sc.nextInt() ;//InputMismatchException:输入类型和结果不匹配!
             System.out.println("number:"+number);
        }else if(sc.hasNextLine()){
            String line = sc.nextLine() ;
            System.out.println("line:"+line);
        }else{
            System.out.println("目前不提供这个类型的方法...");
        }

    }
}

2. String类

String是一个封装char[]数组的对象,字符串不可变
通过下图中的底层实现可以看出:被final修饰,是常量,不能被继承
String str = “abc”; 等效于:char data[] = {‘a’, ‘b’, ‘c’};

	String s  = "abc" ;
		//String s = new String("abc") ;
		
	    String str1 = new String("Hello");
		String str2 = new String("Hello");
		System.out.println(str1.equals(str2));
		System.out.println(str1 == str2);
		
		String s3 = "hello" ;
		String s4 = "world" ;
		String s5 = "helloworld" ;
		System.out.println(s5==(s3+s4)) ;
		System.out.println(s5.equals(s3+s4)) ;
		System.out.println(s3.equals(s4)) ;
		System.out.println(s3==s4) ;	
		
		System.out.println(s5 == ("hello"+"world"));

2.1构造方法:

  • public String():空字符串    类似于 String s = "" ;
  • public String(String original):构造一个字符串对象,里面指定一个字符串常量值
  • public String(byte[] bytes) :使用平台默认字符集(idea默认utf-8)解析解码--->字节数组--->字符串
  • String(byte[] bytes, int offset, int length) :将一部分字节数组构造成字符串
  • public String(char[] value):将字符数组---构造成String,使其表示字符数组参数中当前包含的字符序列。
  • public String(char[] value,int offseet,int len):将一部分字符串数组构造成字符串

2.2 面试题:

1.数组中没有length(),字符串有没有length(),集合中没有有length()?

数组没有length(),length属性  数组对象.length
字符串有length(),
集合没有,获取集合中 元素数 size()

2. String s = new String("hello") ; 和String s = "hello" ; 有什么区别?分别创建了几个对象?

前者:在堆内存中开辟空间,然后字符串值常量---指向常量池, 两个对象

后者:推荐的方式,直接常量赋值,直接在常量池中找,有就返回地址,没有,开辟常量空间!

​​​2.3 String类相关的获取功能

1)public char charAt(int index) :获取指定索引处的字符
2)int length():获取字符串的长度
3)public String concat(String str)拼接功能-- 将一个字符串拼接到指定字符串的后面(末尾追加)
4)public String substring(int beginIndex):截取--->从指定位置开始截取,默认截取到末尾结束!
    public String substring(int beginIndex, int endIndex) 截取--->从指定位置开始截取到指定位置结束--包前不包后(包含第一个位置,不包含最后一个位置,只能取到endIndex-1处)
5)public String[] split(String regex):拆分(分割) ,按照指定的分割符将字符串拆分成字符串数组6)public int indexOf(int ch) :返回此字符第一次在字符串中出现的索引值                                             public int lastIndexOf(int ch):返回此字符最后一次在字符串中出现的索引值

//字符串按照字典顺序比较
 int compareTo(String anotherStr)
    String s1 = "abc" ;
    String s2  = "cba" ;
    System.out.println(s1.compareTo(s2)) ;//'a'-'c'   -2

2.4 描述String的compareTo(String str)字典顺序比较的逻辑

String字符串里面的compareTo(String str)逻辑
        "hello"
        "abc"
        "hell"
这个方法:将字符串---->字符数组---->获取两个字符串长度的最小值(临界点)
int k = 0 ;
while( k < 长度最小值){
    
    不断两个字符数组每一个字符
    如果第一个字符值不同,直接方法结束: 返回 两个字符相减 (ASCII码表的值)
    k++
  
     如果循环结束之前,如果者两个字符串的都相同,返回字符串长度 相减
}

2.5 String的判断/替换/去除两端空格 (了解)相关功能

2.5.1 判断功能: 

  • boolean contains(String str):判断大串中是否包含指定子字符串
  • boolean endsWith(String suffix):判断是否以指定结尾的字符串
  • public boolean startsWith(String prefix):判断是否指定的字符串开头
  • boolean equals(Object anObject):比较两个字符串内容是否相同
  • boolean equalsIgnoreCase(String anotherString) :不区分大小写比较两个字符串是否相同
  • public boolean isEmpty():判断字符串是否空 ,长度为0,true
  • 空串,和空对象? 一样吗?       不一样

2.5.2 替换功能:

  • public String replace(char oldChar,char newChar)  
  • public String trim() :去除字符串两端空格 (一般io流中:  文件读写文件)

2.6 String类的转换功能

1)char[] toCharArray() {}将字符串转换成字符数组
   String(char[] chs)/String(char[] chs,int index,int length) //将字符数组转换成字符串
2)byte[] getBytes(){} 将字符串转换成字节数组;                                                                                   将字节数转换成字符串---String的构造方法:
   String(byte[] bytes) :(bytes[]--->String  ) 平台默认字符集解码
   String(byte[] bytes,int index,int length)//从字节数组的某个位置开始,指定长度,转换成字符串  
3)public String toLowerCase():将字符串转换成小写
   public String toUpperCase():将字符串转换成大写
4)万能方法:  可以将任何数据类型---->String
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值