Java学习(三)核心类


一、Object类

Object类定义在java.lang包中,是所有类的顶级父类,在Java体系中,所有类都直接或间接地继承了Object类。
因此,任何Java对象都可以调用Object类中的方法,而且任何类型的对象都可以赋给Object类型的变量
常用方法:
clone():对象复制
equals():判断两个对象是否相等
finalize():垃圾回收器用来清理资源
toString():返回当前对象的字符串表示

1.equals()方法

判断两个基本数据类型是否相等直接使用“==”运算符即可,但是引用类型不同:
“==”:比较两个对象的地址是否相同,即比较栈地址是否相同
“equals()”:比较两个对象的内容是否相同,即比较内容是否相同
解释:
== : 如果比较的是基本数据类型,那么比较的是变量的值
== :如果比较的是引用数据类型,那么比较的是地址值(两个对象是否指向同一块内存)
equals:如果没有重写equals方法比较的是两个对象的地址值。 如果重写了equals方法后我们往往比较的是对象中的属性的内容
(更多内容请参考解释链接)

class Person{
	private String name;
	 private int age;
	 private String address;
	public Person(){
	}
	public Person(String name, int age, String address){
		this.name = name;
		this.age = age;
		this.address = address;
	}
	public boolean equals(Person p){
		if(this.age == p.age){
		return true;
		}
		else return false;
	}
}
public class PersonEqualsDemo{
	public static void main(String[] args){
		Person p1 = new Person(“张三”,33,”青岛”);
		Person p2 = new Person(“李四”,33,”秦皇岛”);
		System.out.println(“p1==p2是:”+(p1==p2));//false,比较引用类型,两个对象的地址不同
		System.out.println(“p1.equals(p2)是:”+(p1.equals(p2)));//true,重写的equals比较两个对象的年龄信息,相同即返回true.
	}
}

此处equals()方法重写后比较内容是否相同。

2.toString()方法

toString()方法:是一个“自我描述”的方法,该方法返回当前对象的字符串表示
当使用System.out.println(obj)输出语句时,系统会自动调用对象的toString()方法
Object类中的toString()方法返回包含类名和散列码的字符串,可在自定义类中重写该方法。
当类没有重写toString()方法时,系统会自动调用Object默认的toString(),显示的字符串格式将是“类名@哈希代码值”//建议在子类中都重写toString()方法。

二、字符串类

字符串就是一连串的字符序列,Java提供了String、StringBuffer和StringBuilder三个类来封装字符串。
(1)String:创建的字符串不可变,若改变字符串变量的值,实则在内存中重新创建了一个新的字符串。
(2)StringBuffer:创建的字符串是可变的,字符串内容可以通过一系列方法改变,但所引用的地址一直不变。(即对实参进行改变)
(3)StringBuilder:JDK1.5新增的一个类,与StringBuffer类似,但是该类没有实现线程安全,因此性能较好。不涉及线程安全时,优先考虑使用StringBuilder。

1.String类

在这里插入图片描述
String类的相关用法

public class StringDemo{
    public static void main(String[] args){
	String str =I am Zhangsan, welcome to Qinhuangdao!;
	System.out.println(str);	
	System.out.println(“字符串长度:”+ str.length());	
	System.out.println(“截取从下标5开始的字符串:”+ str.substring(5));
	System.out.println(“截取下标5-10的字符串:”+ str. substring(5,10));
	System.out.println(“转换成小写:”+ str.toLowerCase());		
	System.out.println(“转换成大写:”+ str.toUpperCase());
    }
}

(1)当字符串与字符串进行“+”连接时,第二个字符串会连接到第一个字符串后;
(2)当字符串与其他类型进行“+”连接时,因字符串在前面,所以其他类型数据将转换为字符串,然后与前面字符串进行连接;
(3)当他类型与字符串进行“+”连接时,因字符串在后面,其他类型按照从左向右进行计算,最后再与字符串进行连接。

public class StringLinkDemo{
    public static void main(String[] args){
	String name =Zhangsan;
	String str1 = “hello ”+name;
	System.out.println(str1);//helloZhangsan
	String str2 = name+10+20;
	System.out.println(str2);//Zhangsan1020
	String str3 = 10+20+name;
	System.out.println(str3);//30Zhangsan
    }
}

2.StringBuffer类

StringBuffer字符缓冲区类是一种线程安全的可变的字符序列。
在这里插入图片描述

public class StringBufferDemo{
    public static void main(String[] args){
	StringBuffer sb = new StringBuffer();
	System.out.println(“初始长度:”+ sb.length());
	sb.append(“java”);	
	System.out.println(“追加后:”+ sb);
	sb.insert(0,“hello ”);	
	System.out.println(“插入后:”+ sb);
	sb.replace(5,6,,);	
	System.out.println(“替换后:”+ sb);
	sb.delete(5,6);	
	System.out.println(“删除后:”+ sb);
	sb.reverse();	
	System.out.println(“反转后:”+ sb);
	System.out.println(“当前字符串长度:”+ sb.length());
	sb.setLength(5);	
	System.out.println(“改变长度后:”+ sb);
    }
}

3.StringBuilder类

StringBuilder字符串生成器类是在JDK1.5后新增的一个类,与StringBuffer类似,也是创建可变的字符串序列,不过没有线程安全控制,此处不再赘述。

三、Scanner类

Scanner扫描器类在java.util包中,用来获取用户从键盘输入的数据。
在这里插入图片描述

import java.util.Scanner;
public class ScannerDemo{
    public static void main(String[] args){
	Scanner sc = new Scanner(System.in);
	System.out.println(“请输入10个整数,数字之间用空格隔开:”);
	int sum = 0;
	for(int i=0; i<10; i++){
		sum+=sc.nextInt();
	}
	System.out.println(10个整数的和是:”+ sum);
    }
}

next()方法只接收空格之前的内容,如果希望连空格一起接收,可以使用useDelimiter()方法设置分隔符后再接收。(类比于C++中的getline())

四、Math类

Math类包含常用的执行基本数学运算的方法,所提供的方法都是静态的,可以直接调用,不需实例化。
在这里插入图片描述

Math类的方法几乎覆盖了所有数学计算功能,如Math.cos(1.57)、 Math.sin(1.57) 、 Math.log(12)等。

public class MathDemo{
    public static void main(String[] args){
	//计算平方根
	System.out.println(Math.sqrt(2.3)=+ Math.sqrt(2.3));
	//计算绝对值
	System.out.println(Math.abs(-4.5)=+ Math.abs(-4.5));
	//计算最大值
	System.out.println(Math.max(2.3,3.5)=+ Math.max(2.3,3.5));//只能两个数之间比较
	//返回0.0与1.0之间的随机数
	System.out.println(Math.random()=+ Math.random());//得到的随机数可以自由用*n的方式扩大n倍
    }
}

五、Date类

Date类在java.util包中,用来表示日期和时间,该时间是一个长整型,精确到毫秒。
在这里插入图片描述

import java.util.*;
public class DateDemo{
    public static void main(String[] args){
	//以系统当前时间实例化一个Date对象
	Date dateNow = new Date();
	System.out.println(“系统当前时间是”+ dateNow.toString());
	//以指定值实例化一个Date对象
	Date dateOld = new Date(8000L);
	System.out.println(“dateOld是”+ dateOld.toString());
	//2个日期进行比较,并输出
	System.out.println(after()是:”+ dateNow.after(dateOld));//True,dataOld是指定时间
	System.out.println(before()是:”+ dateNow.before(dateOld));//False
	System.out.println(“比较结果是:”+ dateNow.compareTo(dateOld));
    }
}
  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

君知燕云归

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值