今天主要学了一些类如:Object,包装类(Integer,Bigdecimal)
一、Object
1.基本概念
java.lang.Object类是java语言中类层次结构的根类,也就是说任何一个类都是该类的直接或者间接子类
2.常见用法
(1)boolean equals(Object obj)
用于判断调用对象是否与参数对象相等。
该方法默认比较两个对象的地址,与==的效果等价。
若希望比较两个对象的内容,则需要重写该方法。
若该方法重写时,应该重写nashCode方法。
(2)int hashCode()
用于获取调用对象的哈希码值(内存地址的编号】
若两个对象调用egua1s方法的结果相同,则各自调用nashCode方法的数值必须相等。
若两个对象调用equals方法的结果不同,则各自调用hashCode方法的数值应该不相等。
(3)String toString()
用于返回调用对象的字符串形式。
默认字符串的内容有:包名.类名@哈希码值的无符号十六进制形式
为了返回更有意义的数据内容需要重写该方法。
使print()或printin()打印或+拼接时,都会自动调用toString.方法。
package Object0126;
public class Student extends Object{
private String name;
private int id;
// public boolean equals(Object o) {
// Student student = (Student)o;
// return this.getId() == student.getId();
// }
//重写equals
public boolean equals (Object o) {
if (this == o) {
return true;
}
if (null == o) {
return false;
}
if (o instanceof Student) {
Student student = (Student)o;
if (this.getName().equals(student.getName()) && this.getId() == student.getId()) {
return true;
}
}
return false;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", id=" + id +
'}';
}
//全参构造
public Student(String name, int id) {
this.name = name;
this.id = id;
}
//get,set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
package Object0126;
public class StudentTest {
public static void main(String[] args) {
Student stu1 = new Student("小柳", 1001);
Student stu2 = new Student("小柳", 1001);
System.out.println(stu1.equals(stu2));
System.out.println(stu1.toString());
}
}
true
Student{name='小柳', id=1001}
Process finished with exit code 0
二、包装类
1.Integer
java.lang.Integer类内部包装了一个int类型的变量作为成员变量,主要用于实现对int类型
的包装并提供int类型到String类之间的转换等方法。
常用的方法
(1)Integer(int value)
根据参数指定的整数来构造对象
(2)Integer(String s)
根据参数指定的字符串来构造对象
(3)int intValue()
获取调用对象中的整数值并返回
(4)static Integer valueof(int i)
根据参数指定整数值得到Integer类型对象
(5)static int parseInt(String s)
将字符串类型转换为int类型并返回
注意:JDK5发布之前使用包装类对象进行运算时,需要较为繁琐的"拆箱和装箱操作,JDK5增加了自动装箱”
和拆箱的功能。
package Integer;
public class ingeter {
public static void main(String[] args) {
//根据参数指定的整数来构造对象
Integer i = new Integer(1);
//根据参数指定的字符串来构造对象
Integer i1= new Integer("2");
int a = 20;
//根据参数指定整数值得到Integer类型对象
Integer i2 = Integer.valueOf(a);
String b = "30";
//将字符串类型转换为int类型并返回
int i3 = Integer.parseInt(b);
System.out.println(i);
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
}
}
1
2
20
30
Process finished with exit code 0
2.Bigdecimal
基本概念
由于float类型和double类型在运算时可能会有误差,若希望实现精确运算则借助
java.math.BigDecimal类型加以描述。
常用的方法
(1)BigDecimal(String val)//根据参数指定的字符串来构造对象
(2)BigDecimal add(BigDecimal add) //用于实现加法运算
(3)BigDecimal subtract(BigDecimal sub) //用于实现减法运算
(4)BigDecimal multiply(BigDecimal mul) //用于实现乘法运算
(5)BigDecimal divide(BigDecimal div) //用于实现除法运算
(6)static int ROUND HALF UP //向最接近的数字舍入,"四舍五入":
package BigdecimalTest01;
import java.math.BigDecimal;
public class BigdemalTest {
public static void main(String[] args) {
BigDecimal bd1 = new BigDecimal("0.1");
BigDecimal bd2 = new BigDecimal("0.3");
System.out.println(bd1.add(bd2));
System.out.println(bd1.subtract(bd2));
System.out.println(bd1.multiply(bd2));
System.out.println(bd1.divide(bd2,BigDecimal.ROUND_HALF_UP));
}
}
0.4
-0.2
0.03
0.3
Process finished with exit code 0
3.String类
常量池
String str1 "abc";
String str2 "123";
//比较str1=str2
String str3 = "abc";
//比较 str1=str3
由于Stringi类型描述的字符串内容是个常量不可改变,因此Java虚拟机将首次出现的字符串放入常量中,若后续代码中出现了相同的字符串内容则直接使用池中已有的字符串对象而无需申请内存以及创建对象,从而提高了性能。
常见方法
String()
使用无参方式构造对象得到空字符序列
String(byte[] bytes,int offset,int length)-使用oytes数组中下标从off3et位置开始的1 ength个字节来构造对象
String(byte[] byte3)-使用ytes数组中的所有内容构造对象
String(String str)-根据参数指定的字符串内容来构造对象,新创建对象为参数对象的副本。
char charAt(int index)-方法charAt用于返回字符串指定位置的字符。index表示指定的位置
int length()-返回字符串字符序列的长度
boolean contanin3(Char3 equence s)-用于判断当前字符串是否包含参数指定的内容
String toLowerCase ()-返回字符串的小写形式
String toupperCase ()-返回字符串的大写形式
String trim()-返回去掉签到和后继空白的字符串
boolean startsWith(String prefix)-判断字符串是否以参数字符串开头
boolean endsWith(String suffix)-判断字符串是否以参数字符串结尾
package String;
public class StringDemo1 {
public static void main(String[] args) {
String str1 = "abc";
String str2 = "123";
System.out.println(str1 == str2);
String str3 = new String("abc");
String str4 = new String("abc");
System.out.println(str1 == str3);
System.out.println(str3 == str4);
System.out.println(" ");
String str5 = "abc";
System.out.println(str1 == str5);
System.out.println(str3.equals(str4));
System.out.println(str1.equals(str5));
}
}
false
false
false
true
true
true
Process finished with exit code 0
4.SringBuffer 和 StringBuilder
基本概念
由于String类描述的字符串内容是个常量,不可改变,当需要在ava代码中描述大量类似的字符串时,只能单独申请和存储,此时会造成内存空间的浪费。为了解决上述问题java.lang.StringBuilder类和StringBuffer类来描述字符序列可以改变的字符串,如:"ab","abc",“"abcd"。其中StringBuffer类是从jdkI.0开始存在,属于线程安全的类,因此效率比较低:其中StringBuilder类是从jdk1.5开始存在,属于非线程安全的类因此效率比较高:
常见方法
StringBuilder类
StringBuilder()-构造一个不带任何字符的字符串生成器,初始容量为16个字符
StringBuilder(String str)-构造一个字符串生成器,并初始化为指定的字符串内容
int capacity()
返回当前容量
int length()
返回长度(字符数)
StringBuilder delete(int start,int end)-
删除字符串,前闭后开区间
StringBuilder replace(int start,int end,String str)-
替换字符串
StringBuilder reverse()
字符串反转
int indexof(String str)
查找字符串出现的位置
StringBuffer类
上同
package String;
public class StringBuilderDemo01 {
public static void main(String[] args) {
StringBuilder sb1 = new StringBuilder("xiaoliuxixi");
System.out.println(sb1.capacity());;
System.out.println(sb1.append("666"));
System.out.println(sb1.charAt(5));
System.out.println(sb1.indexOf("i"));
System.out.println(sb1.insert(0,"123"));
System.out.println(sb1.delete(0,3));
System.out.println(sb1.reverse());
System.out.println(sb1.replace(0,3,"123"));
}
}
i
1
123xiaoliuxixi666
xiaoliuxixi666
666ixixuiloaix
123ixixuiloaix
5.Date类
基本概念
java.util.Date类主要用于描述特定的瞬间,也就是年月日时分秒,可以精确到毫秒。
常用方法
Date()
分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
Date(long date)-分配Date对象并初始化此对象,以表示自从标准基准时间(称为"历元(epoch)”,即1970年1月1日00:00:00GMT)以来的指定毫秒数
long getTime()-返回自1970年1月1日00:00:00GMT以来此Date对象表示的毫秒数。
void setTime(long time)-设置此Date对象,以表示1970年1月1日00:00:00GwT以后time毫
秒的时间点。
package Date;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateTest01 {
public static void main(String[] args) {
Date date = new Date();
Date date1 = new Date(10000);
System.out.println(date1);
date1.setTime(1000);
System.out.println(date1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss");
String date2 = sdf.format(date);
System.out.println(date2);
}
}
Thu Jan 01 08:00:10 CST 1970
Thu Jan 01 08:00:01 CST 1970
2024-01-26 08-32-03
Process finished with exit code 0
6.SimpleDateformat类
基本概念
java.text.SimpleDateFormat类主要用于实现日期类型和文本类型之间的转换。
常用的方法
SimpleDateFormat()-用默认的模式和默认语言环境的日期格式符号构造SimpleDateFormat。
SimpleDateFormat(String pattern)-用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat
package Date;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateTest01 {
public static void main(String[] args) {
Date date = new Date();
Date date1 = new Date(10000);
System.out.println(date1);
date1.setTime(1000);
System.out.println(date1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss");
String date2 = sdf.format(date);
System.out.println(date2);
}
}
Thu Jan 01 08:00:10 CST 1970
Thu Jan 01 08:00:01 CST 1970
2024-01-26 08-32-03
Process finished with exit code 0
以上就是今天所学拜拜!