常用类

来源:互联网 发布:java购物商城源码 编辑:程序博客网 时间:2024/06/01 09:06
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@4ffb06c9System.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()方法
@Overridepublic 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@5e4c689eSystem.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)
@Overridepublic 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@5e4c689eSystem.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());//0System.out.println("-----------------------");//public String(byte[] bytes):将字节数组转换成字符串//构造一个字节数组,静态初始化byte[] bys = {97,98,99,100,101} ;//abcdeString 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);//abcSystem.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 lengthString 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());//0System.out.println("-----------------------");//public String(byte[] bytes):将字节数组转换成字符串//构造一个字节数组,静态初始化byte[] bys = {97,98,99,100,101} ;//abcdeString 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);//abcSystem.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 lengthString 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);// falseSystem.out.println(s3.equals((s1 + s2)));//trueSystem.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'));//2System.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));// worldSystem.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 Efor(int x = 0 ; x < chs.length ; x ++){System.out.println(chs[x]);}//static String valueOf(char[] chs):将字符数组转换成字符串String ss = String.valueOf(chs) ;//JavaSESystem.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);}}















原创粉丝点击