Java基础知识(四)

String类型:
特点:类型是用final修饰的,底层是字符数组和其对数组的
一些操作。创建出来的对象不可变。但是声明的变量可以
可以指向不同的对象。
因为是java语言中最常用的一种类型,所以有一定的优化
在使用String类型,提供了字符串常量池:
常量池:在给字符串的变量赋值时,先去常量池中寻找这个对象,如果有
就把这个对象的地址信息给变量,如果找不到,则会新建一个对象,
放进常量池里。这样有利于对象的可重用性。
这样的对象:必须是字符串字面量,或者是字面量之间的拼接操作
如:String str = "helloworld";
String str = "hello"+"world";
字符串的字面量拼接是在编译期间拼接出结果。
String常用的API
indexOf();
lastIndexOf();
length():返回的字符串的长度。
数组中有length:叫属性,集合中有size()
substring():截取子字符串
toUpperCase():将字符串中英文字母变大写
toLowerCase():将字符串中英文字母变小写
charAt(int index):取索引上的字符
concat(String str):与参数str进行拼接
contains(String str):判断字符串中是否包含子字符串str
endsWith(String str):判断是否以str为后缀
startsWith(String str):判断是否以str为前缀
replace(char old,char new):
replace(String old,String new):
用new替换old
equals(Object str):与参数str比较内容是否一致(长的是否一样)
equalsIgnoreCase(String str):忽略大小的比较
什么是正则表达式?
是一个有规律的,有特定意义的一串字符,通常用来
进行匹配,查找等操作。
常用符号:
*:任意字符。
[abc]:表示abc中的任意一个字母
[^abc]:表示除了abc之外任意字符
[0-9]:表示0-9中的任意一个数字
[a-z]:表示a-z中的任意一个字母
[0-9a-zA-Z_]:表示这些字符中的任意一个
[a-z&&[^abc]]:表示a-z中除了abc之外的任意一个字母
[\d]:表示0-9中的任意一个数字
[\D]:表示非数字中任意一个字符
[\w]:表示单词字符中任意一个 相当于[0-9a-zA-Z_]
[\W]:除了单词字符外的任意一个
\s:表示[\n\t\r\f],空白
\S:非空白
\d*:表示有0个或0个以上数字
\d?: 表示没有或者有1个的数字
\d+:表示有1个或者是1个以上的数字
\d{n}:标有有n个数字
\d{n,}:表示有n个或n个以上的数字
\d{n,m}:表示有n-m个数字
用()进行分组
():表示分组
"(186)|(137)\d{8}": 表示匹配186的手机号,或者137的手机号
"^":表示从头开始检查字符串是否匹配正则表达式
"$": 表示检查字符串的结尾是否匹配正则表达式
"^[\d]{8}$":表示从头到尾检查字符串是否完全匹配
在写字符串时,想表达"\"这个字符,必须在前面添加转义字符
转义字符:\
有一些特殊字符都需要被转义,才行。eg: " ' \
String支持正则表达式:
1:matchs(String reg):
参数为正则表达式,用来判断字符串是否匹配正则表达式
匹配:返回true
不匹配:返回false
2:split(String reg):
用来拆分字符串:用符合正则表达式的子字符串拆分成字符串数组。
返回值类型是字符串数组。
如果字符串的首位就符合正则表达式,会拆出一个空字符串""元素
在字符串的末尾如果符合了,不会拆分出一个空字符串元素。
3:replaceAll(String reg,String new):
作用是使用new这个字符串替换字符串中符合reg的子串
Object类型:
是所有引用类型的父类,在引用类型的顶端。
它的引用变量可以指向任何类型的一个对象
Object obj = "aaaa";
obj = new int[3];
obj = new Scanner(System.in);
面试题:怎么使用数组存一些类型不同的数据
用Object定义一个数组
Object[] arr = new Object[3];
arr[0] = "aaa";
arr[1] = new int[3];
arr[2] = new Scanner(System.in);
Object类型中的常用方法:
1:toString():
在Object类型中,方法的返回为"类全名@散列码"
在自定义类型时,如果不手写继承Object,系统会默认提供继承Object
toString()方法就会被继承。
继承后的方法返回的字符串没有意义。我们应该重写toString():
用来描述new出来的对象的信息。
重写toString():默认规则如下:
"类全名[属性名=属性值,属性名=属性值]"
toString():当想输出显示对象信息时,会默认调用这个方法
2:equals():
在Object类型中,equals()相当于==,比较的是地址,是不是同一个对象。
在大多数情况下,我们不比较是不是同一个对象,而应该比较
这两个对象的内容是否一样。
自定义的类继承过来的方法就不满足要求了。
应该重写equals()
重写规则:
public boolean equals(Object obj){
}
1:应该判断传进来的参数是不是null
2:判断传进来的参数是不是自己
3:判断传进来的参数是不是本类型
如果是同一类型,再去比较属性。
包装类:八大基本数据类型
java语言是面向对象的语言,而八大基本数据类型的值不是对象,当我们想把这些值当成对象时,就需要使用包装类,功能就是把基本数据类型的数值转换成对象。
byte---java.lang.Byte
short---java.lang.Short
int---java.lang.Integer
long---java.lang.Long
float--java.lang.Float
double---java.lang.Double
char---java.lang.Character
boolean---java.lang.Boolean
常用方法:
Integer.valueOf(int val):
会将int的值转换Integer类型的对象
Double.valueOf(double val):
会将double的值转换Double类型的对象
装箱操作:基本数据类型--->包装类
intValue():
doubleValue();
拆箱操作:将包装类对象转换成相应的基本数据类型
在jdk1.5版本以后,支持自动拆箱和装箱
在做运算时,包装类的对象都会转换成相应的
基本数据类型再计算(自动拆箱)
Integer num = 5;--->Integer num = Integer.valueOf(5)
装箱操作
int a = new Integer("5");---->int a = new Integer(5).intValue();
拆箱操作
reg:
Integer a = 5;//装箱
Integer b = 6; //装箱
Integer c = a+b;//先拆箱,运算结果再装箱
常用方法:
Integer.parseInt(String str)
Double.parseDouble(String str)
作用:将字符串转换成包装类型
int a = Integer.parseInt("12");
int b = Integer.parseInt("abc");这种情况
会出现异常:
NumberFormatException:数字格式化异常---程序运行时发生
日期类型
1:java.util.Date:日期类型。
java语言中支持的日期操作,Date,用来计算时间的分量。
但是Date类中的方法大多数已经过时,
被Calendar类型取代
2:Date的使用
3:java.text.SimpleDateFormat:
作用:通常都是用来对日期格式化,或者将字符串转换成日期类型
构造器:
SimpleDateFormat(String pattern):
pattern:用来定义日期格式
y:年
M:月
d:日
H:24小时制的时
h:12小时制的时
m:分
s:秒
E:表示星期
a:表示上下午(am|pm)
常用方法:
String format(Date date):
将日期转换成字符串
Date parse(String str)
将字符串转换日期类型
有可能会出现ParseException:转换异常----编译期间检查的

猜你喜欢

转载自blog.csdn.net/qq_40717759/article/details/79973335