【Java基础】(十三)Java常用类(Object、包装类、String、日期相关类、数学相关类)

相当于字典,可以浏览一遍,遇到需要的便回来查。

一、Object类

1. 如果一个类没有指定父类,那么这个类的父类的Object类;

如果一个类指定了父类,那么这个类的间接父类的Object类;

2. ==

基本数据类型:判断两个变量是否相等
引用数据类型:判断两个引用是否指向同一个对象—地址

3. equals()

1)Object类

equals()和引用数据类型中==的作用是相同的

2)String类

equals()用来判断两个字符串的内容是否相同,和父类Object中的equals方法作用不一样,
原因是:String类中重写了父类Object中的equals方法。

3)自定义的类型(开发人员自己设计的类)

如果需要判断对象的内容(属性的值)是否相同,那么就要重写equals()方法(可以通过开发工具生成)

4. toString()

返回对象的字符串表示形式:全类名@哈希值
通过System.out.println(对象名)的操作,会默认调用toString方法,等效于System.out.println(对象名.toString())
如果希望打印自定义类型当中的属性,需要重写toString()方法。

二、包装类----基本数据类型的包装类

1. 解决的问题

解决了基本数据类型不能被当成类使用的问题;

2. 基本类型对应的包装类

byte------->Byte
short------>Short
int--------->Integer
long------->Long
float------->Float
double---->Double
char------->Character
boolean–>Boolean

除int、char以外,均为首字母大写。

3. 基本数据类型和包装类之间的转换

1)基本数据类型—>包装类----装箱

手动装箱 Integet i = new Integet(10);
自动装箱 Integer i = 10;

2)包装类—>基本数据类型----拆箱

手动拆箱 int a = i.intValue();
自动拆箱 int a = i;

4. 基本数据类型和字符串转换

1)基本数据类型–>String
//方法一
int a = 100; 
String str = a + "";
//方法二
int a = 100;
String str = String.valueOf(a);
2)String–>基本数据类型

例如:

String str = "100";
int a = Integer.parseInt(str);

String str1 = "110.9f";
float f = Float.parseFloat(str1);

String str2 = "100.8";
double d = Double.parseDouble(str2);

三、字符串相关的类(String、StringBuffer、StringBuilder)

String 等同于 char[]

1.如何创建字符串

String str1 = "hello world";//常用
String str2 = new String("hello world");
	//创建字符串的方式
	String str = "hello world";
	String str1 = new String("hello world");
	char[] arr = {'h', 'e', 'l', 'l', 'o'};
	String str2 = new String(arr);
	System.out.println("str.equals(str1):" + str.equals(str1));
	System.out.println("str.equals(str2):" + str.equals(str2));

可见,两种方式创建的字符串值相等,且String 等同于 char[]

2. 判断功能

2和3部分内容,看看即可,并不会经常使用,因为这些判断和获取,有更简单、高效的办法(正则表达式)能解决

equals(String string)					判断两个字符串的内容是否相同
equalsIgnoreCase(String string)			判断是否相等,忽略大小写
contains(String string)					判断是否包含
startsWith(String string)				判断字符串是否以特定字符串开始
startsWith(String string,int i)		判断字符串是否以特定字符串开始---带偏移量(i表示向后偏移的字符数)
endsWith(String string)					判断字符串是否以特定字符串结束
isEmpty()								判断字符串是否为空
compareTo(String)						按字典顺序比较两字符串的值
	//关于compareTo举例说明
	System.out.println("aaa".compareTo("abc"));
	System.out.println("aaa".compareTo("aaa"));		
	System.out.println("aaac".compareTo("aaa"));

输出结果为:

-1
0
1

原理:从前往后依次比较所有字符,若原字符串的字符等于相比较的字符,则向后比较;若大于,则为1;小于则为-1。当有一方结束,而另一方未结束时,长的大。

3. 获取功能

length()								获取字符串的长度
charAt(int i)							获取特定位置的字符(以0为首个字符)
substring(begin)						获取子字符串
substring(begin, end)					获取子字符串,包含begin,不包含end
toUpperCase()							获取字符串的全大写形式
replace(char, char)
replace(String, String)					获取将某一字符(或字符串)替换为另一字符(或字符串)后的字符串(前后对应)
trim()									获取去除首尾空格后的字符串

其中常用方法为:equals、isEmpty、length、trim

4.正则表达式(必须掌握!)

正则表达式不是Java独有的功能,而是广泛应用于多种编程语言中,并且语法完全相同。

正则表达式是包含特定规则的字符串,用于检测字符串是否符合某种规则,或将特定格式的某些内容提取出来。
原理:正则表达式从目标字符串首个位置,逐个比较,当且仅当目标字符串中包含完全符合正则表达式的子串时,视为匹配成功,否则匹配失败。
常用的正则表达式符号:

^ 匹配字符串的开始(写在正则表达式的开始位置,若有此符号,则表明正则表达式必须从目标字符串的首个位置开始匹配)
	即,目标字符串必须以正则表达式的格式开始。
$ 匹配字符串的结尾
	即,目标字符串必须以正则表达式的格式结束。
a-z 匹配所有小写字母
A-Z 匹配所有大写字母
0-9 匹配所有阿拉伯数字
[] 表示一个字符(在括号内填入上面三种,可以对该字符进行限制)
判断字符串是否只有1个或者没有字符X
X?
判断字符串是否没有或者多个有字符X
X*
判断字符串是否有1个或者多个有字符X
X+
判断字符串是否只有n个字符X
X{n}
判断字符串是否只有n个或大于n个字符X
X{n,}
判断字符串是否有大于n个且小于m个字符X
X{n,m}

在Java中使用正则表达式步骤:

	String str1 = "a";
	//正则表达式完成:判断字符串str1是否只有一个字符,并且这个字符是英文字母
	//1.按要求编写正则表达式
	String reg1 = "^[a-zA-Z]$";
	/*必须以正则表达式开始和结束
	 *	即目标字符串不再仅仅是包含正则表达式
	 * 	而是完全符合正则表达式时
	 * 	才算匹配成功
	 * 匹配一个字符
	 * 	既可以是大写也可以是小写
	 * */
	System.out.println(str1.matches(reg1));
	/*目标字符串.matches(正则表达式)
		 * 进行匹配,若匹配成功返回true,匹配失败返回false
		 * */

再来几个,熟练一下。尝试读懂这些正则表达式,并且预测结果。

	String str2 = "ab";
	String reg2 = "^[a-zA-Z]{2}$";
	System.out.println(str2.matches(reg2));
	
	String str3 = "abcdefgdada";
	String reg3 = "^[a-zA-Z]{10,20}$";
	System.out.println(str3.matches(reg3));
	
	String str4 = "abacgdag090";
	String reg4 = "^[a-zA-Z0-9]{10,20}$";
	System.out.println(str4.matches(reg4));
	
	//只能以字母开头
	String str5 = "5abacgdag090";
	String reg5 = "^[a-zA-Z][a-zA-Z0-9]{9,19}$";
	System.out.println(str5.matches(reg5));
	
	String str6 = "1561";
	String str61 = "";
	String reg6 = "^[0-9]$";
	System.out.println(str6.matches(reg6));
	System.out.println(str61.matches(reg6));
	
	String reg7 = "^[0-9]*$";
	System.out.println(str6.matches(reg7));
	
	String str8 = "0";
	String reg8 = "^[0-9]?$";
	System.out.println(str8.matches(reg8));

结果:
在这里插入图片描述

5. 字符串在内存当中的存储

编译过程中会对字符串进行优化 static
字符串长度不可改变

6. StringBuffer StringBuilder

String类型进行字符串拼接消耗内存的问题
append()
toString()
StringBuffer---在多线程环境下使用
StringBuilder----在单线程环境下使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值