JavaSE之第九章常用类

第九章 常用类

Arrays类,操作数组
String类,字符串
Scanner类,输入
System类,访问系统

9.1 Object类

9.1.1 Object类

是Java中所有类的父类
public class 类名 extends Object(默认存在,可以不写) {
类体
}

9.1.2 Object类的方法

1)protected clone():克隆,创建并返回对象的一个副本
对object类的重写





2)equals()指示其他某个对象是否与此对象“相等”
比较两个对象是不是指向同一个内存空间,相当于“==”

3)hashCode():返回对象的哈希码

  1. toString():试图将对象转为字符串的操作,都会调用这个方法



5)notify(), notifyAll(), wait()是在多线程中使用

9.2 包装类

Java是99%的面向对象的编程语言
而另外的1%就是基本数据类型
包装类实际上就是基本数据类型的面向对象的表示方式
8种基本数据类型对应8个包装类

基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

除了基本数据类似之外的都是引用数据类型,用一个类来描述。
所有引用数据类型的默认值是null。
虽然基本数据类型和包装数据类型互相转换有装箱和拆箱的过程,但是我们平时使用的时候
把包装数据类型当成基本数据类型来使用就可以

9.2.1 装箱和拆箱

装箱:基本数据类型可以自动转换成包装类型
int i = 10;
Integer j = i;//自动装箱

拆箱:包装类型也可以自动转换成相应的基本数据类型
Integer j = 10;
int i = j;//自动拆箱

基本数据类型和包装类型的运算操作都是一样的
但也有例外,比如“==”运算符

为什么要使用包装类
Byte b; //表示-128~127这256个值
Byte B; //表示-128~127这256个值,还可以是null
例如:表示一个人的体重
如果使用基本数据类型,当一个人没有上报体重时,设置成任何值都是不合适的
如果使用包装类型,就可以简单的设置成null

1.2.2 类型的转换

基本数据类型/包装类型与字符串之间的转换
例如:

包装数据类型最主要使用:包装数据类型和字符串之间的转换
1、把基本数据类型转换成字符串
(1)基本数据类型+“” :String str = 12 + “”; // “12”
(2)基本数据类型的包装类.toString()
String str1 = Integer.toString(3);
String str2 = Double.toString(3.14);
2、把字符串转换成基本数据类型(从网页的输入框中得到的都是字符串)
(1) Integer.parseInt(String str);  // “23”  “3.14”
Double.parseDouble(String str);  
Boolean.parseBoolean(String str);
XXXX.parseXXXX(String str);
(2)new对象:Integer integer = new Integer(String str);
Integer interger = new Integer(“4”);
int i = integer.intValue();

9.3 字符串

9.3.1 String类

String类代表字符串。Java程序中的所有字符串字面值(如“abc”)都作为此类的实例(对象)实现
都Java中只要是“”包起来的东西,都会在内存中创建出一个String类型的对象保存它

9.3.2 字符串对象的创建

9.3.3 字符串是常量

它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为String对象是不可变的,所以可以共享



老版本中,常量池在方法区中
新版本中,常量池在堆中
1.8常量池是放在堆里面

public void test1() {
   // "abc"双引号括起来的字符串:常量字符串,他也是一个对象
   // 1.8之后常量池放到堆,在常量池里面找有没有这个"abc"对象,
   // 如果常量池里面没有这个字符串对象,java就帮你在常量池里面new一个"abc"字符串对象。
   // 如果常量池里面有这个字符串,就把这个字符串的地址赋给这个变量。
   String str1 = "abc";
   String str2 = new String("abc");
   String str3 = "abc";
   // ==比较的是变量指向的对象的地址值
   System.out.println(str1 == str2);// false
   System.out.println(str1 == str3);// true
   System.out.println(str2 == str3);// false
   
   // 比较字符串的内容是不是相等使用equals()
   // 表str1这个字符串和str2这个字符串的内容是不是相等
   System.out.println(str1.equals(str2));// true
   System.out.println(str1.equals(str3));// true
   System.out.println(str2.equals(str3));// true
}


9.3.4 字符串的常用操作

1.获取

2.判断

1)字符串的拼接:+


9.3.5 可变字符串

字符串是常量
因此,所有对字符串的操作中,只要是试图改变字符串内容的操作,都会创建一个新的字符串对象

如果在代码中需要对字符串进行频繁的改变字符串的操作,就会不同的创建新的对象,申请内存,消耗时间和内存资源

如果需要对字符串进行频繁的改变操作,这事情使用可变字符串提升效率

StringBuffer类 是一个可变字符串

创建一个StringBuffer类的对象

delete(start,end):将可变字符串中的指定区域删除掉
insert():在指定位置插入一个新的内容
replace():将指定区域的内容替换成新的字符串
subString():截取字符串

StringBuider类
这个类也是一个可变字符串,使用与StringBuffer基本一样
区别:

  1. StringBuffer线程不安全的,
  2. StringBuider效率更高

推荐尽量使用StringBuider

String、StringBuffer、StringBuilder异同点:
相同点:都是final类,都不能被继承。
不同点:
1、String长度是不可改变的(String类里有final char[] value;),StringBuffer、StringBuilder长度是可变的。
2、StringBuffer是线程安全(需要加锁,效率低)、StringBuilder是线程不安全(没有加锁,效率高)。
如果对这段代码加锁,就可以实现每次只有一个用户能进入这段代码,当执行完了之后,释放这个锁,另一个用户才能进来。
synchronize : 同步 asynchronize : 异步
if (money>1000) {
     money = money - 1000;
}

常量字符串的拼接,编译器会做优化,使用String就可以:
String str = “Java” + “PHP” + “Python” + “C”;
final修饰变量、修饰方法、修饰类有什么特点:
1、final修饰变量,就变成常量
2、final修饰方法,这个方法不能被重写
3、final修饰类,这个类不能被继承

9.4 时间日期类

9.4.1 java.util.Date类

Date类的对象,用来表示一个时间点,精确到毫秒的
创建对象

9.4.2 日期的格式化

DateFormat抽象类
格式化:将Date对象转换成字符串表示
解析:将一个字符串转换成Date对象
SimpleDateFormat类

2022年6月20日 15:24:20
模式:yyyy(或yy,只表示后两位)年MM月dd日 HH:mm:ss SSS

9.4.3 java.sql.Date类

是java.util.Date类的子类
是为了兼容SQL中的Date类型

9.4.4 java.sql.TimeStamp类

是java.util.Date类的子类,精确到纳秒
为了兼容SQL中的TimeStamp类型

9.5 Math类

提供了常用的数学运算的方法
四舍五入round():结果为整数,加上1/2 即:(long)Math.floor(a+0.5d)
随机数random():返回一个大于等于0.0且小于1.0的伪随机带正号double值
Random类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值