常用基础类

来源:互联网 发布:淘宝内部优惠券微信群 编辑:程序博客网 时间:2024/06/04 01:07

1.Object类

类object是类层次结构的根类,每个类都是用object作为超类(父类),所有对象(包括数组)都实现这个类的方法。
(1)、public int  hashCode();   
返回该对象的哈希码值------> 通过哈希算法(哈希表:hashtable)------> 得到一个地址值(但不是真正意义上的地址值)
package work1;public class Student extends Object {}

package work1;public class Test1 {public static void main(String[] args) {Student s1 = new Student();System.out.println(s1.hashCode());Student s2 = new Student();System.out.println(s2.hashCode());System.out.println("clever".hashCode());}}


(2)、public final Class getClass()返回此 Object 的运行时类  (Java反射机制中讲!)
 Class类中有一个方法:public String getName()以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。即获取当前正在运行的这个类的全路径名称
package work1;public class Text2 {public static void main(String[] args) {Student s1 = new Student();Student s2 = new Student();Class c1 = s1.getClass();System.out.println("c1:"+c1);String name = c1.getName();System.out.println("name:"+name);}}


2.toString类

public String toString()返回该对象的字符串表示(建议所有子类都重写此方法)
Integer类中有一个方法:public static String toHexString(int i)
将一个int类型的数据转换成一个十六进制的字符串表现形式
 如果直接输出对象名称,想要显示当前对象的成员变量的值,那么必须重写Object类中的toString()方法
package toString;public class Text3 {private String name;private int age;public Text3(){super();}public Text3 (String name,int age){super();this.name = name;this.age = age;}public String getName(){return name;}public void setName(){this.name = name;}public int getAge(){return age;}public void setAge(){this.age = age;}//子类重写 String toString方法  可以同通过快捷键 alt+shift+s----s 在String toString中自动生成@Overridepublic String toString() {return "Text3 [name=" + name + ", age=" + age + "]";}public static void main(String[] args) {}

package toString;public class Text4 {public static void main(String[] args) {Text3 t = new Text3("caesar",20);System.out.println("输出结果:"+t);System.out.println("用toString方法调用:"+t.toString());System.out.println(t.getClass().getName()+"@"+Integer.toHexString(t.hashCode()));Text3 t2 = new Text3("caesar",20);System.out.println("Name"+t2);System.out.println(t == t2);}}


3.equals()方法

public boolean equals(Object obj)指示其他某个对象是否与此对象“相等”。 

 面试题:
 ==和equal()方法的区别
              ==:  比较的是两个对象的地址值是否相同
equals()方法:  默认比较的是两个对象的地址值是否相同,如果重写了Object类中的equals()方法,那么默认比较就是两个对象的内容是否相同
 使用工具自动生产equals()方法
 * javascript:Array对象,Number对象,String对象,valueOf():====>s1.valueOf(s2) ;比较是内容是否相同

4.finalize

protected  void   finalize()  throws  Throwable:当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法,但是什么时候调用gc不确定。
System类中的一个方法:public void gc() 运行垃圾回收器,这个垃圾回收器最终调用的就是finalize()方法。

5.clone()方法

protected   Object   clone() :Object类中的clone()方法执行特定的复制操作,如果此对象的类不能实现接口Cloneable,则会抛出异常:throws CloneNotSupportedException,注意所有数组都被视为实现接口Cloneable

6.scanner类

创建一个文本扫描器(键盘录入),在java.util包下,需要导包,被fianl修饰不能被继承

Scanner sc = new Scanner(System.in);

System类中的静态字段:

public static final InputStream  in :标准输入流

InputStream(字节流): InputStream is = System.in;  实质是一个抽象类多态

public static final OutputStream  out :标准输出流


7.Scanner类中的注意事项

先后录入两个int类型的数据:
package Scanner;import java.util.Scanner;public class Demo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请录入第一个数据:");int a = sc.nextInt();System.out.println("请录入第二个数据:");int b = sc.nextInt();System.out.println("a:"+a+"b:"+b);}}



先后录入两个String类型的数据:
package Scanner;import java.util.Scanner;public class Demo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请录入第一个数据:");String a = sc.nextLine();System.out.println("请录入第二个数据:");String b = sc.nextLine();System.out.println("a:"+a+"b:"+b);}}



先录入String类型数据再录入int类型数据:
package Scanner;import java.util.Scanner;public class Demo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请录入第一个数据:");String a = sc.nextLine();System.out.println("请录入第二个数据:");int b = sc.nextInt();System.out.println("a:"+a+"b:"+b);}}


先录入int类型数据再录入String类型数据:
此时会发现接收不到第二次录入的String类型数据,直接输出结果,由于“Enter”才能接收数据,是回车换行符导致的。
package Scanner;import java.util.Scanner;public class Demo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请录入第一个数据:");int a = sc.nextInt();System.out.println("请录入第二个数据:");String b = sc.nextLine();System.out.println("a:"+a+"b:"+b);}}



改进方案:在第二次录入之前重新创建一个对象
package Scanner;import java.util.Scanner;public class Demo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请录入第一个数据:");int a = sc.nextInt();Scanner sc1 = new Scanner(System.in);System.out.println("请录入第二个数据:");String b = sc1.nextLine();System.out.println("a:"+a+"b:"+b);}}

9.String类

String类代表字符串,Java程序中的所有字符串字面值都作为此类的实例实现。字符串一旦被赋值,其值不能在改变。
String类常用的构造方法:String():表示一个空字符序列
public  String(byte[ ] bytes ,Charset ch) :默认编码字符集(编码格式):如果平台默认编码格式是GBK(一个中文对应两个字节)格式,可以不写第二个参数
public  String(byte[ ] bytes ,int  Index,int  length): 将部分字节数组构造成一个字符串
public  String(char[ ]  value): 将字符数组构造成一个字符串 
public  String(char[ ]  value,int  Index,int  length): 将部分字符数组构造成一个字符串
public  String(String original):通过字符串常量构造一个字符串对象

编码和解码:(保证格式一致)
编码:把能看懂的东西转换成看不懂的东西:String ---------->byte[ ]:public byte[ ]   getBytes(String charsetName)
解码:把当前看不懂的东西转换成能看懂的(一般就是String类):byte[ ]--------->String:public String(byte[ ] bytes ,CharsetName ch)  
获取字符串长度功能:public int length()

面试题:数组中有没有length(),字符串中有没有length(),集合中有没有length()。
数组中没有length(),数组中的叫length属性,遍历元素时使用
字符串中有length(),遍历字符串使用length()
集合中没有length(),获取集合中的元素数量用size()

10.字符串的特点

一旦被赋值,其值不能被改变。
面试题String s = new String("Hello")和 String s = "Hello" 有什么区别,分别创建了几个对象?
前者创建了两个对象,堆内存中有new String,字符串常量池中也会有这样一个字符串常量(开辟空间的地址);后者创建了一个对象

11.String类的判断功能:

(1) boolean equals(Object obj):当前该对象是否obj这个对象是否相等;
(2) boolean equalsIgnoreCase(String str):比较字符串是否相等,忽略大小写
(3) boolean contains(String str):判断str这个字符串是否包含在当前字符串中
(4) boolean startsWith(String str):是否以str子字符串开头
(5) boolean endsWith(String str):判断是否以str子字符串结尾
(6) boolean isEmpty():判断字符串是否为空

String s = "" ;空字符
String s = " " ;字符串"空格"
String s = null ;当前字符串对象为空

12.String类中常用的获取功能

(1) int length(): 获取字符串长度功能
(2) char charAt(int  index):返回的是索引处对应的字符
(3) int indexOf(int ch) :返回指定字符在次字符串中第一次出现处的索引
(4) int indexOf(String str):返回指定的子字符串在此字符串中第一次出现的索引
(5) int indexOf(int ch,int fromIndex):返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索
(6) int indexOf(String str,int fromIndex):返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索
(7) String substring(int start):从指定位置开始截取字符串,默认截取到末尾
(8) String substring(int start,int end):从指定位置开始截取到指定位置结束(包前[start索引]不包后[end索引])

原创粉丝点击