常用类

1. Object类
        Object 是类层次结构的根类。
  每个类都使用 Object 作为超类(父类)。所有对象(包括数组)都实现这个类的方法。
 1)public int hashCode():返回的是该对象的哈希码值,哈希码值他是通过哈希表(Hashtable)里面的哈希算法算出来的,可以理解为地址值(整数)
 2)public final Class<> getClass():返回此Object正在运行的类:
  public String getName()以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称
public class ObjectDemo {
	public static void main(String[] args) {
		Student s = new Student();
		System.out.println(s);//org1.Student@4ffb06c9
		System.out.println(s.hashCode());//1341851337  地址值
		
		Student s2 = s;
		System.out.println(s2.hashCode());//1341851337 地址值
		
		Student s3 = new Student();
		Class c = s3.getClass();
		System.out.println(c);//class org1.Student  此Object正在运行的类
		String str = c.getName();
		System.out.println(str);// org1.Student student类的全名称路径
	}
}


2.toString()
:返回该对象的字符串表示
该类如果没有重写toString()方法,那么打印出来的是地址值:包名.类名@16进制数据:地址值
  想显示该类的成员变量的值,在该类里面重写Object中的toString()方法
@Override
	public String toString() {
		return "Student [age=" + age + ", name=" + name + "]";
	}
public class STest {
	public static void main(String[] args) {
		Student s = new Student(22,"高圆圆");
		System.out.println(s);
		System.out.println(s.toString());//没有重写org2.Student@5e4c689e
		System.out.println(s.toString());//重写之后 Student [age=22, name=高圆圆]
	}
}


3.public boolean equals(Object obj)
指示其他某个对象是否与此对象“相等”。
  
  equals:默认的比较的是地址值,
  
  Object类中的原码:
  判断此对象(当前类的对象this),obj实际的对象,判断对象是否相等
  public boolean equals(Object obj) {
        return (this == obj);
    }
   
    比较两个对象是否相等,看两个对象中的内容是否相同,就需要在Object类中去重写equals()方法!(shift+alt+s)
@Override
	public String toString() {
		return "Student [age=" + age + ", name=" + name + "]";
	}
public class STest {
	public static void main(String[] args) {
		Student s = new Student(22,"高圆圆");
		System.out.println(s);
		System.out.println(s.toString());//没有重写org2.Student@5e4c689e
		System.out.println(s.toString());//重写之后 Student [age=22, name=高圆圆]
	}
}


4 .String类型的概述:String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。 
  
 字符串是常量,一旦被赋值,其值不能在改变!
  常用的构造方法:
  public String():无参构造
public String(byte[] bytes):将字节数组转换成字符串
public String(byte[] bytes,int offset,int length):将字节数组的一部分转换成字符串
public String(char[] value):将字符数组转换成字符串
public String(char[] value,int offset,int count):将字符数组的一部分转换成字符串
public String(String original):将一个常量转换字符串:String 是不可变的,所以无需使用此构造方法




    数组中有没有length()? 字符串中有没有length()?
length:数组长度属性 :数组中不存在这个方法
字符串中有length():返回字符串长度


public class StringDemo {
	public static void main(String[] args) {
		//无参构造:
		String s = new String() ;
		System.out.println(s);//空字符序列
		System.out.println(s.length());//0
		System.out.println("-----------------------");
		
		
		//public String(byte[] bytes):将字节数组转换成字符串
		//构造一个字节数组,静态初始化
		byte[] bys = {97,98,99,100,101} ;//abcde
		String s2 = new String(bys) ;
		System.out.println(s2);
		System.out.println(s2.length());//5
		
		//public String(byte[] bytes,int offset,int length):将字节数组的一部分转换成字符串
		String s3 = new String(bys, 0, 3) ;
		System.out.println(s3);//abc
		System.out.println(s3.length());
		
		System.out.println("-------------------------");
		
		
		//创建一个字符数组
		char[] ch = {'a','b','c','d','e','爱','高','圆','圆'} ;
		//public String(char[] value):将字符数组转换成字符串
		String s4 = new String(ch) ;
		System.out.println(s4);
		System.out.println(s4.length());
		System.out.println("-------------------------");
		
//		public String(char[] value,int offset,int count):将字符数组的一部分转换成字符串:char[] value,int index,int length
		String s5 = new String(ch, 5, 4) ;//爱高圆圆
		System.out.println(s5);
		System.out.println(s5.length());
		
		//public String(String original):将一个常量转换字符串:由于String 是不可变的,所以无需使用此构造方法
		String s6 = new String("hello") ;
		System.out.println(s6);
		System.out.println(s6.length());
		
		
		
		//创建字符串对象s6相当于 s7字符串对象的创建方式
		String s7 = "hello" ;
		System.out.println(s7);
		System.out.println(s7.length());



5.字符串的特点:
  字符串一旦被赋值,其值不能在改变!
  
  方法区:有一个内存区域:字符串常量池
如果我们创建一个字符串对象,给对象赋值,这个值会在常量池找,有的话,就返回,没有在常量池开辟空间.
 
6.
  面试题:
  String s1 = new String("hello");创建了几个对象
  String s2 = "hello" ;创建了几个对象
 
         s1创建了两个对象
         s2创建了一个对象,直接指向常量池中的!
  
  == 默认比较的是地址值
  equals:默认的比较的是地址值,String类型底层已经重写了Object类中equals方法,比较的是内容是否相同!
  
public class StringDemo {
	public static void main(String[] args) {
		//无参构造:
		String s = new String() ;
		System.out.println(s);//空字符序列
		System.out.println(s.length());//0
		System.out.println("-----------------------");
		
		
		//public String(byte[] bytes):将字节数组转换成字符串
		//构造一个字节数组,静态初始化
		byte[] bys = {97,98,99,100,101} ;//abcde
		String s2 = new String(bys) ;
		System.out.println(s2);
		System.out.println(s2.length());//5
		
		//public String(byte[] bytes,int offset,int length):将字节数组的一部分转换成字符串
		String s3 = new String(bys, 0, 3) ;
		System.out.println(s3);//abc
		System.out.println(s3.length());
		
		System.out.println("-------------------------");
		
		
		//创建一个字符数组
		char[] ch = {'a','b','c','d','e','爱','高','圆','圆'} ;
		//public String(char[] value):将字符数组转换成字符串
		String s4 = new String(ch) ;
		System.out.println(s4);
		System.out.println(s4.length());
		System.out.println("-------------------------");
		
//		public String(char[] value,int offset,int count):将字符数组的一部分转换成字符串:char[] value,int index,int length
		String s5 = new String(ch, 5, 4) ;//爱高圆圆
		System.out.println(s5);
		System.out.println(s5.length());
		
		//public String(String original):将一个常量转换字符串:由于String 是不可变的,所以无需使用此构造方法
		String s6 = new String("hello") ;
		System.out.println(s6);
		System.out.println(s6.length());
		
		
		
		//创建字符串对象s6相当于 s7字符串对象的创建方式
		String s7 = "hello" ;
		System.out.println(s7);
		System.out.println(s7.length());


    6.2 


        字符串变量相加,先开辟空间,再相加
        字符串常量相加,先相加,然后在常量池中,是否有这个值,有直接返回地址值,没有就创建
String s1 = "hello";
		String s2 = "world";
		String s3 = "helloworld";
		System.out.println(s3 == s1 + s2);// false
		System.out.println(s3.equals((s1 + s2)));//true


		System.out.println(s3 == "hello" + "world");///true  先相加 再看常量池
		System.out.println(s3.equals("hello" + "world"));//true


7. String类的获取功能:
  int length():获取字符串的长度
char charAt(int index):返回指定索引处的字符!(重点)


int indexOf(int ch):返回回指定字符在此字符串中第一次出现处的索引(重点)
为什么这里的参数是int类型,而不是char类型
'a'和97 都代表'a'
int indexOf(String str):返回指定字符串在此字符串第一次出现的索引!
int indexOf(int ch,int fromIndex):返回此字符中从指定位置开始后第一次出现的索引
int indexOf(String str,int fromIndex):返回此字符串中从指定位置开始后第一次出现的索引

(重点)
String substring(int start):截取:从指定位置开始截取,默认截取到末尾:包含start这个索引
String substring(int start,int end):从指定位置开始截取到指定位置结束:包左(start这个索引),不包含end这个位置


public static void main(String[] args) {
		//定义一个字符串
		String s = "helloworld" ;
		
		//int length():获取字符串的长度
		System.out.println(s.length());//10
		
		//char charAt(int index):返回指定索引处的字符!
		System.out.println(s.charAt(7)); //r    
		


		//int indexOf(int ch):返回回指定字符在此字符串中第一次出现处的索引
		System.out.println(s.indexOf('l'));//2
		System.out.println(s.indexOf('k'));//-1
		
//		int indexOf(String str):返回指定字符串在此字符串第一次出现的索引!
		System.out.println(s.indexOf("owo"));//4
		
		//int indexOf(int ch,int fromIndex):返回此字符中从指定位置开始后第一次出现的索引
		System.out.println(s.indexOf('l', 4));//8  L在4后第一次出现的索引
		
		
//		String substring(int start):截取:从指定位置开始截取,默认截取到末尾:包含start这个索引
		System.out.println(s.substring(5));// world
		System.out.println(s.substring(0));// helloworld
		
		//String substring(int start,int end):从指定位置开始截取到指定位置结束:包左(start这个索引),不包含end这个位置
		System.out.println(s.subSequence(5, 9));//worl(包左不包右	
	}
}


8. 字符串的转换功能:(重点)
  byte[] getBytes():将一个字符串转换字节数组
char[] toCharArray():(重点方法):将一个字符串转换成字符数组
static String valueOf(char[] chs):将字符数组转换成字符串
static String valueOf(int i):将int类型的数据转换字符串
注意:
String类中的valueOf方法可以将任何数据类型转换成String
String toLowerCase():将字符串转换成小写
String toUpperCase():将字符串转换成大写
String concat(String str):字符串拼接功能
public class Demo3 {
	public static void main(String[] args) {
		//定义一个字符串
		String s = "JavaSE" ;
		
		//byte[] getBytes():将一个字符串转换字节数组
		byte[] bys = s.getBytes() ;
		for(int x = 0 ; x < bys.length ;x++){
			System.out.println(bys[x]);//74 94 118 97 83 69 
		}
		
		//char[] toCharArray():(重点方法):将一个字符串转换成字符数组
		char[] chs = s.toCharArray() ;// J a v a S E
		for(int x = 0 ; x < chs.length ; x ++){
			System.out.println(chs[x]);
		}
		
		//static String valueOf(char[] chs):将字符数组转换成字符串
		String ss = String.valueOf(chs) ;//JavaSE
		System.out.println(ss);
		
		/*
		 * static String valueOf(int i):将int类型的数据转换字符串
			注意:
				String类中的valueOf方法可以将任何数据类型转换成String
		 * */
		int i = 100 ;
		String sss = String.valueOf(i) ;
		System.out.println(sss);//"100"
		
		//	String toLowerCase():将字符串转换成小写
		System.out.println("toLowerCase():" +s.toLowerCase());
		System.out.println("toUpperCase():" +s.toUpperCase());
		
		
		String s1 = "hello" ;
		String s2 = "world" ;
		String s4 = s1.concat(s2) ;//拼接
		System.out.println("s4:"+s4);
		
	}
}















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值