一.常用类
1.object类
1.1作用
1)是超类、基类、所有类的直接或间接父类,位于继承树最顶层
2)可以存储任何对象,作为参数,可以接受任何对象,作为返回值,可以返回任何对象
1.2方法
1.getClass()
1)
public final Class<>getClass(){
}
2)返回引用中存储的实际对象类型
3)用于判断两个引用中实际存储对象类型是否一致
public class student {
private String name;
private int age;
public student() {
}
public student(String name,int age){
super();
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public int setAge() {
this.age = age;
return 0;
}
}
public class Test1 {
public static void main(String[] args) {
student s1=new student("aaa",19);
student s2=new student("bbb",18);
//判断s1和s2是不是同一个类型
Class class1 = s1.getClass();
Class class2= s2.getClass();
if(class1==class2){
System.out.println("属于同类型");
}else{
System.out.println("不属于同类型");
}
}
}
2.hashCode
1)
public int hashcode(){
}
2)返回该对象的哈希码值
3)哈希值根据对象的地址或字符串或数字使用hash算法计算出来的int类型的数值
4)一般情况下相同对象返回相同的哈希码
public class Test1 {
public static void main(String[] args) {
student s1=new student("aaa",19);
student s2=new student("bbb",18);
//判断s1和s2是不是同一个类型
Class class1 = s1.getClass();
Class class2= s2.getClass();
if(class1==class2){
System.out.println("属于同类型");
}else{
System.out.println("不属于同类型");
}
//hashcode
System.out.println(s1.hashCode());//1163157884
System.out.println(s2.hashCode());//1956725890
student s3 = s1;//将s1的地址赋给了s3
System.out.println(s3.hashCode());//1163157884
}
}
3.tostring
1)
public String toString(){
}
2)返回该对象的字符串(表现形式)
3)可以根据程序需求覆盖该方法(进行重写),如:展示对象各个值
public class student {
private String name;
private int age;
public student() {
}
public student(String name,int age){
super();
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public int setAge() {
this.age = age;
return 0;
}
//进行重写
@Override
public String toString() {
return name+":"+age;
}
}
public class Test1 {
public static void main(String[] args) {
student s1=new student("aaa",19);
student s2=new student("bbb",18);
//判断s1和s2是不是同一个类型
Class class1 = s1.getClass();
Class class2= s2.getClass();
if(class1==class2){
System.out.println("属于同类型");
}else{
System.out.println("不属于同类型");
}
//hashcode
System.out.println(s1.hashCode());//1163157884
System.out.println(s2.hashCode());//1956725890
student s3 = s1;//将s1的地址赋给了s3
System.out.println(s3.hashCode());//1163157884
//toString
System.out.println(s1.toString());
System.out.println(s2.toString());
}
}
4.equals
1)
public boolean equals(Object obj){
}
2)默认实现为(this==obj),比较两个对象地址是否相同
3)可进行覆盖,比较两个对象的内容是否相同
4)覆盖方法:首先比较两个引用是否指向同一个对象,其次判断obj是否为null,接着,判断两个引用指向的实际对象类型是否一致,再接着,进行强制类型转换,最后依次比较各个属性值是否相同
public class student {
private String name;
private int age;
public student() {
}
public student(String name,int age){
super();
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public int setAge() {
this.age = age;
return 0;
}
//进行重写
@Override
public String toString() {
return name+":"+age;
}
@Override
public boolean equals(Object obj) {
//1.判断两个对象是否是同一个引用
if(this==obj){
return true;
}
//2.判断obj是否为空
if(obj==null){
return false;
}
//3.判断是否是同一个类型
// if(this.getClass()==obj.getClass()){
// }
//instanceof 判断对象是否是某种类型
if(obj instanceof student){
//4.强制类型转换
student s=(student) obj;
//5.比较属性
if(this.name.equals(s.getName())&&this.age==s.getAge()){
return true;
}
}
return false;
}
}
public class Test1 {
public static void main(String[] args) {
student s1=new student("aaa",19);
student s2=new student("bbb",18);
//判断s1和s2是不是同一个类型
Class class1 = s1.getClass();
Class class2= s2.getClass();
if(class1==class2){
System.out.println("属于同类型");
}else{
System.out.println("不属于同类型");
}
//hashcode
System.out.println(s1.hashCode());//1163157884
System.out.println(s2.hashCode());//1956725890
student s3 = s1;//将s1的地址赋给了s3
System.out.println(s3.hashCode());//1163157884
//toString
System.out.println(s1.toString());//aaa:19
System.out.println(s2.toString());//bbb:18
//equals
System.out.println(s1.equals(s2));//false
student s4=new student("p",17);
student s5=new student("p",17);
System.out.println(s4.equals(s5));//false//进行重写后为true
}
}
5.finalize()
1)当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记垃圾对象,进入回收队列
2)垃圾对象:没有有效引用指向此对象时,为垃圾对象
3)垃圾回收:由GC销毁垃圾对象,释放数据存储空间
4)自动回收机制:JVM的内存耗尽,一次性回收所有垃圾对象
5)手动回收机制:使用System.gc();通知JVM进行垃圾回收
2.String类
2.1 介绍
1)字符串是常量,创建之后不可以改变
2)字符串字面值存储在字符串池中,可以共享
3)
String s = "hello";//产生一个对象,字符串池中存储
4)
String s = new String("hello");//产生两个对象,堆、池各存储一个
public class Demo01 {
public static void main(String[] args) {
String name="hello";//存储在字符串池中
name="zhangsan";//把zhangsan赋值给name变量,给字符串赋值时,并没有修改数据,而是重新开辟一个空间
String name2="zhangsan";
//演示字符串的另一种方式
String str = new String ("java");
String str2= new String("java");
System.out.println(str==str2);//false
System.out.println(str.equals(str2));//true
}
}
2.2 常用方法
1.public int length(): 返回字符串的长度
2.public char charAt(int index):根据下标获取字符
3.public boolean contains(String str):判断当前字符串中是否包含str
4.public char[] toCharArray():将字符串转成数组
5.public int indexOf(String str):查找str首次出现的下标,存在,则返回该下标;不存在,则返回-1
6.public int lastIndexOf(String str):查找字符串在当前字符串中最后一次出现的下标索引
7.public String trim():去掉字符串前后的空格
8.public String toUpperCase():将小写转换成大写
9.public boolean endsWith(String str):判断字符串是否是以str结尾
10.public String replace(char oldChar,char newChar):将旧字符串替换成新字符串
11.public String[] split(String str):根据str做拆分
age String;
import java.util.Arrays;
import java.util.Locale;
public class Demo01 {
public static void main(String[] args) {
String name="hello";//存储在字符串池中
name="zhangsan";//把zhangsan赋值给name变量,给字符串赋值时,并没有修改数据,而是重新开辟一个空间
String name2="zhangsan";
//演示字符串的另一种方式
String str = new String ("java");
String str2= new String("java");
System.out.println(str==str2);//false
System.out.println(str.equals(str2));//true
//字符串方法的使用
String content="java是世界上最好的编程语言,java真好";
System.out.println(content.length());//22 方法1
System.out.println(content.charAt(content.length()-1));//方法2 好,当超出了这个范围,会出现异常
System.out.println(content.contains("java"));//true 方法3
System.out.println(content.contains("php"));//false
System.out.println(Arrays.toString(content.toCharArray()));//方法4 [j, a, v, a, 是, 世, 界, 上, 最, 好, 的, 编, 程, 语, 言, ,, j, a, v, a, 真, 好]
System.out.println(content.indexOf("java"));//方法5 0
System.out.println(content.indexOf("java",4));
System.out.println(content.lastIndexOf("的"));//方法6 16
System.out.println(content.trim());//方法7 java是世界上最好的编程语言,java真好
System.out.println(content.toUpperCase());//方法8 JAVA是世界上最好的编程语言,JAVA真好
System.out.println(content.endsWith(content));//方法9 true
System.out.println(content.replace("世界","地球"));//java是地球上最好的编程语言,java真好
String say="java is the best programing language,java xiang";
String[] arr=say.split("[,]");
System.out.println(arr.length);// 2
for(String string:arr){
System.out.println(string);//java is the best programing language
// java xiang
}
}
}
3.StringBuffer和StringBuilder
3.1 简单介绍
1)前者可变长字符串,JDK1.0提供,运行效率慢、线程安全
2)后者可变长字符串,JDK5.0提供,运行效率快、线程不安全
package String;
public class Demo02 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
//1.append();追加
sb.append(10);
sb.append("java世界第一");
System.out.println(sb.toString());//10java世界第一
sb.append("java真好");
System.out.println(sb.toString());//10java世界第一java真好
//2.insert();添加
sb.insert(10,"A");//在过了10个元素后添加一个A
System.out.println(sb.toString());//10java世界第一Ajava真好
//3.replace();替换
sb.replace(1,7,"B");
System.out.println(sb.toString());//1B界第一Ajava真好
//4.delete():删除
sb.delete(0,3);//从0到3-1的元素,也就是第一个元素直到第三个元素清除
System.out.println(sb.toString());//第一Ajava真好
//清空
sb.delete(0,sb.length());
System.out.println(sb.toString());
}
}
package String;
public class Demo03 {
public static void main(String[] args) {
//开始时间
long start = System.currentTimeMillis();
/* String string="";
for(int i=0;i<99999;i++){
string+=i;
}
System.out.println(string);*/
StringBuilder Sb=new StringBuilder();
for(int i=0;i<99999;i++){
Sb.append(i);
}
long end = System.currentTimeMillis();
System.out.println("用时:"+(end-start));
}
}
4.Data类
4.1 基本介绍
获取时间,格式转化
4.2Data日期类
package Data_;
import java.util.Date;
public class Demo01 {
public static void main(String[] args) {
//1.创建Date对象
//今天
Date date1 = new Date();
System.out.println(date1.toString());//Tue Jun 28 22:54:20 CST 2022
System.out.println(date1.toLocaleString());//2022-6-28 22:54:20
//昨天
Date date2 = new Date(date1.getTime() - (60 * 60 * 24 * 1000));
System.out.println(date2.toLocaleString());//2022-6-27 22:54:20
//2.after before
boolean b1 = date1.after(date2);//今天在昨天的后面
System.out.println(b1);//true
boolean b2 = date1.before(date2);
System.out.println(b2);//false
// 比较compareTo()
int d = date2.compareTo(date1);//比毫秒值 昨天减去今天应该是负的 -1
System.out.println(d);
//比较是否相等
boolean b3 = date1.equals(date2);
System.out.println(b3);//false
}
}
5.System类
5.1基本介绍
主要用于获取系统的属性数据和其它操作,构造方法私有的
5.2 方法
1)static void arraycopy():复制数组
2)static long currentTimeMillis(); 获取当前系统时间,返回的是毫秒值
3)static void gc(); 建议JVM赶快启动垃圾回收器回收垃圾
4)static void exit(int status); 退出JVM,如果参数是0,表示正常退出,非0表示异常退出
package System_;
import java.util.Arrays;
public class Demo01 {
public static void main(String[] args) {
//arraycopy:数组的复制
//src:源数组
//srcPos:从那个位置开始复制0
//dest:目标数组
//destPos:目标数组的位置
//length:复制的长度
int[] arr={20,18,15,8,35,26,45,90};
int[] dest=new int[8];
System.arraycopy(arr,4,dest,4,4);
for(int i=0;i<dest.length;i++){
System.out.println(dest[i]);
}
//Arrays.copyOf(original,newLength)
System.out.println(System.currentTimeMillis());
long start = System.currentTimeMillis();
for(int i=9999999;i<99999999;i++){
for(int j=-9999999;j<9999999;j++){
int result=i+j;
}
}
long end=System.currentTimeMillis();
System.out.println("用时:"+(end-start));
new Student("aaa",19);
new Student("bbb",19);
new Student("ccc",19);
//垃圾回收
System.gc(); //回收了ccc 19
// 回收了bbb 19
// 回收了aaa 19
//退出JVM
System.exit(0);
System.out.println("程序运行结束...");
}
}
package System_;
public class Student {
private String name;
private int age;
public Student(String name,int age){
super();
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public int setAge(int age){
this.age=age;
return 0;
}
@Override
public String toString() {
return "Student[name="+name+",age ="+age+"]";
}
@Override
protected void finalize() throws Throwable {
System.out.println("回收了"+name+""+" "+age);
}
}