Number \ String \ Character
Number
一般情况下我们会使用数据的基本数据类型:byte、int、short、long、double、float、boolean、char;
对应的包装类型也有八种:Byte、Integer、Short、Long、Double、Float、Character、Boolean;
包装类型都是用 final 声明了,不可以被继承重写;在实际情况中编译器会自动的将基本数据类型装箱成对象类型,或者将对象类型拆箱成基本数据类型
了解了包装类那么就需要清楚,包装类和基本数据类型之间的关系
自动装箱 装箱操作:是从基本数据类型变成对应的包装类
public class zhuangXiang {
public static void main(String[] args) {
Integer a = 10;
int b = 1;
Integer c = a+b;
System.out.println(c.toString());
}
}
自动拆箱 拆箱操作:是从包装类变成对应的基本数据类型
public class chaiXiang {
public static void main(String[] args) {
Integer i = 10;
int a = 1-9;
System.out.println(a);
}
}
String
Java提供了String类来创建和操作字符串。
1.获取字符串的长度 string.length()
public class StringOption {
public static String str = "Hello";
public static void main(String[] args) {
int length = str.length();
System.out.println("Str length is: "+length);
}
}
结果
Str length is: 5
2.连接两个字符串 str1.concat(str2)
concat 和 + 拼接字符串的效果是一样的
public class StringConcat {
public static void main(String[] args) {
String str1 = "hello";
String str2 = "xiaoMing";
String str3 = str1.concat(str2);
System.out.println("string concat result is: "+str3);
System.out.println("string + result is: "+str1+str2);
}
}
结果
string concat result is: helloxiaoMing
string + result is: helloxiaoMing
3.获取指定位置字符 str1.charAt(int)
public class StringChartAt {
public static void main(String[] args) {
String str = "hello";
char c = str.charAt(0);
System.out.println("str[0] = " + c);
}
}
结果
str[0] = h
4.判断字符串是否以某字符串结尾的 [ boolean endsWith(String suffix)]
public class StringEndWith {
public static void main(String[] args) {
String str = "main.xml";
boolean xml = str.endsWith("xml");
System.out.println(xml);
}
}
结果
true
5.将此字符串与指定的对象比较。 [boolean equals(Object anObject)]
public class StringEqual {
public static void main(String[] args) {
String str1 = "hello";
String str2 = "hello";
System.out.println("str1 和 str2 是否相等:"+str1.equals(str2));
System.out.println(str1.equals("hello"));
}
}
结果
str1 和 str2 是否相等:true true
6.将此字符串与指定的字符串比较不考虑大小写。 [ boolean equalsIgnoreCase(String anotherString)]
public class StringEqualsIgnoreClass {
public static void main(String[] args) {
String str1 = "hello";
String str2 = "HELLo";
System.out.println("str1 和 str2 是否相等:"+str1.equalsIgnoreCase(str2));
}
}
结果
str1 和 str2 是否相等:true
[ int indexOf(String str) ](返回指定子字符串在此字符串中第一次出现处的索引。
[ int lastIndexOf(String str) ]返回指定子字符串在此字符串中最右边出现处的索引。
[ boolean matches(String regex) ](告知此字符串是否匹配给定的正则表达式。
String.replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
String.split(String str) 根据给定的字符串分割此字符串
String.toLowerCase() 字符串变成全部小写
String.toUpperCase() 字符串变成全部大写
String.valueOf()
String.toCharArray() 字符串变成char数组
String.startsWith() 判断字符串是否以某字符串开头的。
String 和 StringBuffer、StringBuilder 的区别
- String是Java中基础且重要的类,并且String也是Immutable类的典型实现,被声明为final class,除了hash这个属性其它属性都声明为final,因为它的不可变性,所以例如拼接字符串时候会产生很多无用的中间对象,如果频繁的进行这样的操作对性能有所影响。
- StringBuffer就是为了解决大量拼接字符串时产生很多中间对象问题而提供的一个类,提供append和add方法,可以将字符串添加到已有序列的末尾或指定位置,它的本质是一个线程安全的可修改的字符序列,把所有修改数据的方法都加上synchronized。但是保证了线程安全是需要性能的代价的。
- StringBuilder是JDK1.5发布的,它和StringBuffer本质上没什么区别,就是去掉了保证线程安全的那部分,减少了开销