【有道云笔记】七 3.22 String,常见API、包装数据类型
https://note.youdao.com/s/TBKxWnj6
一、String
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 }
@Test public void test2() { String str = "java AndroidA"; System.out.println(str.length());//13 char[] chars = str.toCharArray(); char ch = str.charAt(5);//A System.out.println(ch); System.out.println(str.indexOf('A'));//5 System.out.println(str.indexOf('X'));//-1 System.out.println(str.indexOf('A', 6));//12 System.out.println(str.indexOf("And"));//5 System.out.println(str.lastIndexOf('A'));//12 } @Test public void test3() { String str1 = "java"; String str2 = "Java"; System.out.println(str1.equals(str2));//false System.out.println(str1.equalsIgnoreCase(str2));//true String str = "java AndroidA"; System.out.println(str.contains("And"));//true System.out.println(str.startsWith("java"));//true //offset:偏移 System.out.println(str.startsWith("And", 5));//true System.out.println(str.endsWith("oidA"));//true System.out.println(str.isEmpty());//false // ""空字符串,也是一个对象 System.out.println("".isEmpty());//true } @Test public void test44() { // "" //String str = "java And"; char[] array = {'j', 'a', 'v', 'a', ' ', 'A', 'n', 'd'}; String str = new String(array); System.out.println(str);//java And char[] chars = str.toCharArray(); System.out.println(chars); //Arrays:操作数组的工具类 System.out.println(Arrays.toString(chars)); //[j, a, v, a, , A, n, d] } @Test public void test424() { String str = "java AndroidA"; String newStr = str.replace('A', 'B'); System.out.println(newStr); } @Test public void test66() { String str = "java android python"; String[] array = str.split(" "); System.out.println(Arrays.toString(array)); } @Test public void test87() { // subtree: 子树 // substring:子字符串 String str = "java AndroidA"; System.out.println(str.substring(5));//AndroidA //beginIndex – the beginning index, inclusive. //endIndex – the ending index, exclusive. System.out.println(str.substring(5, 8));//Andr }
二、String、StringBuffer、StringBuilder异同点
相同点:都是final类,都不能被继承。
不同点:
1、String长度是不可改变的,StringBuffer、StringBuilder长度是可变的。
2、StringBuffer是线程安全(需要加锁,效率低)、StringBuilder是线程不安全(没有加锁,效率高)。
final char[] value;
char[] value;
如果对这段代码加锁,就可以实现每次只有一个用户能进入这段代码,当执行完了之后,释放这个锁,另一个用户才能进来。
synchronized: 同步 加锁
if (money>=1000) {
money = money - 1000;
}
String str = str1 + str2 + str3 + str4;
String str1 = "java";
str1 + "android";
常量字符串的拼接,编译器会做优化,使用String就可以:
String str = "Java" + "PHP" + "Python" + "C";
@Test public void test55() { String str1 = "java"; String str2 = "php"; String str3 = "python"; StringBuilder builder = new StringBuilder("C"); //builder.append(str1); //builder.append(str2); //builder.append(str3); builder.append(str1).append(str2).append(str3); StringBuffer buffer = new StringBuffer("C"); buffer.append(str1).append(str2).append(str3); System.out.println("------------------"); String str = builder.toString(); System.out.println(str); }
三、包装数据类型
包装数据类型:
Java是纯面向对象语言,int、double都是基本数据类型。
int Integer
char Character
double Double
long Long
short Short
boolean Boolean
byte Byte
float Float
虽然基本数据类型和包装数据类型互相转换有装箱和拆箱的过程,但是我们平时使用的时候
就把包装数据类型当成基本数据类型来使用就可以。
public void test45() { System.out.println(Integer.MAX_VALUE); //自动拆箱和装箱 //Integer integer = new Integer(4); //自动装箱操作,等价于上面操作 Integer integer = 4; int i = integer.intValue(); int num = 5; num = num + 3; //integer.intValue() 自动拆箱 // 4+3 //new Integer(7) 自动装箱 integer = integer + 3; System.out.println(integer); }
包装数据类型最主要使用:包装数据类型和字符串之间的转换
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();
四、作业
1、实现trim方法
String trim(String str);
"java Android"
" java Android"
"java Android "
""
" "
2、实现把“I Love Java!”的字符全部转换为小写并输出到控制台。
toLowerCase() toUpperCase()
Case Sensitive大小写敏感