ApiString

package com.newedu.jb.day14.api;


/**
 * String 类的常用方法测试:
 * 
 * String 类代表字符串。
 * 概念:多个字符组成的一串数据(字符序列)
 * 
 * 注意事项:
 * 1:Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
 * 2:字符串是常量;它们的值在创建之后不能更改
 * 3:字符串可以看成是字符数组。
 *    char data[] = {'a', 'b', 'c'};
 *    String str = new String(data);
 * 构造方法
 * public String():无参构造
 * public String(byte[] bytes):byte数组类型
 * public String(byte[] bytes,int offset,int length): offset = index
 * public String(char[] value)
 * public String(char[] value,int offset,int count): offset = index
 * public String(String original): 提供一个字符串常量,来创建一个对象
 * @author jerry
 *
 */


 1, public class StringDemo {


public static void main(String[] args) {


String str0 = new String();
// 正常的方式,创建一个对象 方式1
String str1  = new String("jerry");

// 方式2
String str2 = "jerry";

/**
* 方式2 比方式1 简单,所以工作中非常常用。
*/


char[] array = {'j','e','r','r','y'};

String str3 = new String(array);

// -128 ~ 127
byte[] array2 = {97,98,99};

String str4 = new String(array2);//"abc"
String str5 = new String(array2,0,1);//"abc"

System.out.println(str0);
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
System.out.println(str4);
System.out.println(str5);


//字符串是常量,它的值在创建之后不能更改
//String s = “hello”; s += “world”; 问s的结果是多少?


String s = "hello";
s +="world";
// s = "helloworld"
System.out.println(s);



//String s = new String(“hello”)
//和String s = “hello”;的区别?

String s1 = new String("hello");
String s2 = "hello";
String s3 = new String("hello");
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
System.out.println(s3.hashCode());

/**
* java 设计之前,String的日常的增加,删除操作等操作,
* 操作效率不高。String作为特殊的 类型处理
*  有常量池的概念
*/






}


}
2 package com.newedu.jb.day14.api;


/**
 * 关于String类型中常量池的概念的练习题
 * @author jerry
 *
 */
public class StringDemo2 {


public static void main(String[] args) {
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1==s2);
System.out.println(s1.equals(s2));


String s3 = new String("hello");
String s4 = "hello";
System.out.println(s3==s4);
System.out.println(s3.equals(s4));

String s5 = "hello";
String s6 = "hello";
System.out.println(s5==s6);
System.out.println(s5.equals(s6));

System.out.println("=============");
String s11 = "hello";
String s12 = "world";
String s13 = "helloworld";
// String常量相加时,将两个常量先拼接到一起,然后再到常量池里面。
System.out.println("helloworld"==("hello"+"world"));

// String变量相加时,现在堆内存中,创建一个新的堆空间,堆空间再引用常量池的内容
System.out.println(s13==s11+s12);
System.out.println(s13.equals(s11+s12));

/**
* 变量拼接,被jvm优化为 使用stringbuilder 这个可变字符串来处理,
* 以减少常量池中,临时常量的数量

* 假如: String s1 = "hello"
*      String s2 ="world1"
*      String s3 ="world2"
*      String s4 = "world3"
*         
*         
*         s1+s2+s3+s4
*         
*         "hello"
*         "world1"
*         "world2"
*         "world3"
*      System.out.println(s1+s2+s3+s4);
*      
*      建议 工作中,少用 字符串 变量的+ 拼接;建议使用StringBuilier来拼接字符串
*      但是现在,不用操这个心
*      因为 jdk 1.8 编译器编译的时候,以及自动帮我优化为了 String
*      
*      这个可以字符串来处理。不会增加常量池中,临时常量的数量
*       
*/


String[] array = {"jerry","susan","peter","william",""};


String temp = "";
for(int i=0;i<100;i++){
temp += array[i];
System.out.println(temp);
}

/**

* for  第一次: 

* 常量池中
*  ""
*  "jerry"
*  "jerrysusan"
*  "jerrysuanpeter"
*  "jerrysusanpterwilliam..."
*  

*/
}


}
3,package com.newedu.jb.day14.api;


/**
 * String 类的其他常用方法
 * 
 * -- 判断功能
 * boolean equals(Object obj):是否相等
 * boolean equalsIgnoreCase(String str):忽略大小写 来比较是否相等
 * boolean contains(String str):判断字符串中是否包含子字符串
 * boolean startsWith(String str):判断字符串是否以 某个子字符串开头
 * boolean endsWith(String str):判断字符串是否以 某个子字符串结尾
 * boolean isEmpty():判断字符串是否为空
 * 
 * 
 *--获取功能
 * int length(): 返回该字符串的长度,其实就是内部数组的长度
 * char charAt(int index):返回指定索引位置的字符串中的单个字符,其实就是内部数组的元素值
 * int indexOf(int ch):返回一个字符在整个字符串中的第一次出现的索引位置;如果找不到返回-1
 *           这里的入参请注意, 使用了一个技巧: char ,byte,short 自动转换int类型。
 *           indexOf(char ch);
 *           indexOf(byte ch);
 *           indexOf(short ch);
 *           indexOf(int ch);
 * int indexOf(String str): 返回一个指定的子字符串在整个字符串中第一次出现的索引位置;如果找不到返回-1
 * int indexOf(int ch,int fromIndex):返回一个字符在整个字符串中的第一次出现的索引位置;同时
 *     指定查找开始的索引位置;如果找不到返回-1
 * int indexOf(String str,int fromIndex):返回一个指定的子字符串在整个字符串中第一次出现的索引位置
 *     同时指定查找开始的索引位置;如果找不到返回-1
 * String subString(int start):截取整个字符串的一部分,按照指定的索引位置开始,到字符串结尾
 * String subString(int start,int end):按照指定的开始索引和结束索引,截取整个字符串的一部分;
 * @author jerry
 *
 */
public class StringDemo3 {


public static void main(String[] args) {


//测试String的判断功能

//创建一个字符串对象
String str = "jerrysusanpeter";


boolean result = str.equals("jerrysusanpeter");//发生了向上类型的转换

System.out.println(result);

//ctrl+shift +x 
//ctrl+shift+y
String anotherString = "Jerrysusanpeter";

System.out.println(str.equals(anotherString));
System.out.println(str.equalsIgnoreCase(anotherString));


System.out.println(str.contains("susan"));
System.out.println(str.startsWith("Jerry"));
System.out.println(str.endsWith("r"));
System.out.println(str.isEmpty());
System.out.println(" ".isEmpty());//按照数组的长度来处理


System.out.println("===========截取功能==========");

System.out.println(str.length());
System.out.println(str.charAt(7));// 是从零开始计数的,指定7,其实是返回第8个元素
System.out.println(str.indexOf('s'));
System.out.println(str.indexOf("s"));
System.out.println(str.indexOf('s',6));// 7
System.out.println(str.indexOf("s",7));
System.out.println(str.substring(6));
System.out.println("截取字符串后,原有的字符串变了没有?没变:"+str);
System.out.println(str.substring(6,9));
}


}
4, package com.newedu.jb.day14.api;


/**
 * String类型的常用方法
 * 
 * -- 转换功能
 * byte[] getBytes():将字符串转换为byte数组
 * char[] toCharArray():将字符串转换为char数组
 * static String valueOf(char[] chs):将字符数组转化为String类型的对象
 * static String valueOf(int i):将整数转化为String类型的对象
 * String toLowerCase():字符串转小写
 * String toUpperCase():字符串转大写
 * String concat(String str):字符串拼接
 * 
 * -- 其他功能
 * 
 * 替换功能
 * String replace(char old,char new)
 * String replace(String old,String new)
 * 去除字符串两端空格
 * String trim()
 * 按字典顺序比较两个字符串  
 * int compareTo(String str):并返回 正数,0,负数
 * int compareToIgnoreCase(String str) 
 * @author jerry
 *
 */
public class StringDemo4 {


public static void main(String[] args) {
String str = "jerrysusanpeter";

byte[] bytes = str.getBytes();
System.out.println(bytes);
for(int i=0;i<bytes.length;i++){
System.out.println(bytes[i]);
}
System.out.println("=========");

char[] charArray = str.toCharArray();
System.out.println(charArray);

for(int i=0;i<charArray.length;i++){
System.out.println(charArray[i]);
}

System.out.println("===============");
//将char数组,转换为一个String类型的对象
String str1 = String.valueOf(charArray);

//将基本数据类型 ,转换为String类型
String str2 = String.valueOf(100);//"100"


System.out.println(str.toUpperCase());
System.out.println(str);
System.out.println(str.toUpperCase().toLowerCase().toUpperCase()
.toLowerCase().toUpperCase());

// concat()拼接

String str3 = "hello";
String str4 = "world";
System.out.println(str3.concat(str4));
//拼接完成后,str3 改变了吗?没有
System.out.println(str3);

System.out.println("==================");


System.out.println(str3.replace('e', 'a'));
//替换完成后,str3 改变了吗?没有
System.out.println(str3);


String str5 = " jerry  susan   ";
System.out.println(str5.trim());
// trim()后,原先的字符串有没有变?没有
System.out.println(str5);


//int compareTo(String str):两个字符串判断是否大于小于等于;并返回 正数(大于),0,负数(小于)

String str6 = "jerry";
String str7 = "jerry";
String str8 = "jerre";
String str9 = "jerrz";

System.out.println(str6.compareTo(str7));
System.out.println(str6.compareTo(str8));
System.out.println(str6.compareTo(str9));




}


}



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值