<pre name="code" class="java">public class Demo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
new Demo1();
}
public Demo1(){
// //String 实例化的两种方法
// String s = "You are the best";
// String ss = new String("you are the best");
// String sss = "you are" + " the best";
//
// System.out.println("s : " + s);
// System.out.println("ss :" + ss);
// System.out.println("sss : " + sss);
//
// //判断字符串是否相等用 equals
// System.out.println("调用 equals 的执行结果");
// boolean b1 = (s.equals(ss));
// System.out.println("b1 == " + b1);
// boolean b2 = (ss.equals(sss));
// System.out.println("b2 == " + b2);
//
// //equalsIgnoreCase 不区分大小写比较
// System.out.println("调用 equalsIgnoreCase 的执行结果");
// boolean b5 = (s.equalsIgnoreCase(ss));
// System.out.println("b5 == " + b5);
// boolean b6 = (ss.equalsIgnoreCase(sss));
// System.out.println("b6 == " + b6);
//
// //使用比较运算符 ==
// //java中 == 是判断两个对象的堆内存是否相等,属于地址的数值相等的比较,并不是关于字符串内容
// boolean b3 = (s == ss);
// System.out.println("b3 == " + b3);
// boolean b4 = (s == sss);
// System.out.println("b4 == " + b4);
//
// //引用匿名对象
// String str = "Hello";
// //采用"字符串".equals(字符串对象);此时的equals()可以自动区里null问题,正常判断
// System.out.println("Hello".equals(str));
//注意与上一个的区别
//如果st中没有输入用户名,则会提示NullPointerException警告
// String st = null;
// System.out.println(st.equals("Hello"));
/*
* String类的对象在实例化的时候采用不同的方式,开辟的内在空间也不同
* 直接赋值:只开辟一块堆内存空间,而且保存的字符串内容自动入池,以供其他内容相同的字符串使用
* 构造方法:开辟两块堆内存空间,有一块将变成垃圾,并且字符串的内容无法自动入池,但是可以使用String类的intern()方法手工入池
*/
//采用直接赋值法创建字符串时的内存分配
// String a = null,b = null,c = null;
// a = "Hello";
// //如果已经采用直接复制方式开辟了内存空间,再次采用同一方式的时候会指向同一块内存
// b = "Hello";
// c = a;
// System.out.println(a == b);
// System.out.println(a == c);
// System.out.println(b == c);
// String a = "Hello";
// String b = new String("Hello").intern();
// String c = "Hello";
// String d = new String("Hello");
// System.out.println(a == b);
// System.out.println(a == c);
// System.out.println(b == c);
// System.out.println(a == d);
//String对象一旦声明则不可改变
//由下面的例子可以看出。输出的内容改变了,但是字符串中的内容并没有变化,改变的只是String类对象的引用,并且会产生大量的垃圾,这种方法应该尽量避免,少使用
// String str = "Hello";
// str += " World";
// str += "!!";
// System.out.println(str);
/*
* 字符串与字符数组之间的转化及相关操作
* charAt();返回指定索引位置上的字符串内容
* toChatArray();将字符串变为字符数组
* new String();将字符数组转化为字符串
* new String(a,b,c);将字符数组a从第b号元素开始,输出连续的c个(注意一定不要越界)
*/
String str = "helloworld";
//输出字符串中第4个位置的元素,从0开始计数
System.out.println(str.charAt(4));
//将字符串转化为字符数组
char a[] = str.toCharArray();
for(int i = 0;i < a.length;i ++)
{
System.out.print(a[i] + ",");
//小写和大写的ASCII值差32
a[i] -= 32;
}
System.out.println();
System.out.println("将全部字符数组转化为字符串" + new String(a));
//取得部分内容的时候需要设置起始点和取得的长度,注意字符串是从0开始计数的
System.out.println("将部分字符数组变为字符串" + new String(a,5,4));
}
}
package Test1;
public class Demo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
new Demo2();
}
public Demo2(){
String str = "hellojava";
//将字符串转化为byte数组
byte[] a = str.getBytes();
//小写变大写
for(int i = 0;i < a.length;i ++)
a[i] -= 32;
//将字节数组转化为字符串输出
System.out.println(new String(a));
//将字节数组a从第2个元素开始的3个元素转化为字符串输出
System.out.println(new String(a,2,3));
}
}
/*
* 注意在访问的时候一定要防止数组越界
* 1.字符串查找方法
* 判断字符串中子串是否存在时,返回的是boolean值,
* 判读某字符出现的位置时,返回字符在字符串中出现的第一个位置的索引值,如果没有找到,则返回-1
*
* 2.字符串替换
*
* 3.字符串截取
* 从一个指定的字符串中取出部分的内容
*
* 4.字符串拆分
* 将一个字符串按照指定的字符串拆分成若干个字符串,返回的是一个字符型数组
* 注意下面几种特殊的用字符串拆分的方法
* str.split("\\.");
* str.split("\\|");
* str.split("\\\\");//用\作为分隔符
* 有多个分隔符的时候
* str.split("a|b");//以字符串a或者b进行分割
*
* 5.补加
* s.length();
* s.trim.length();//取出字符串前后的空格后字符串的长度
* s.toUpperCase();//全部变为大写
* s.toLowerCase()//所有字母都转化为小写
* s.concat(str);//字符串连接
*/
public class Demo3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
new Demo3();
}
public Demo3(){
String str = "**Hello$$World##";
// 1.
//查找字符串是否存在
if(str.contains("Hello")){
System.out.println("存在");
}
//查找某一个字符是否存在
if(str.indexOf("r") != -1){
System.out.println("内容存在,字符串位置:" + str.indexOf("r"));
}
//从指定位置开始查找,判断某个字符是否存在
if(str.indexOf("o", 6) != -1)
System.out.println("内容存在,字符串位置为:" + str.indexOf("o", 6));
//从结尾位置开始从后往前查找
if(str.lastIndexOf("W") != -1)
System.out.println("存在" + str.lastIndexOf("W"));
if(str.lastIndexOf("W",12) != -1)
System.out.println("存在::" + str.lastIndexOf("W",12));
//判断字符串是否依指定位置开头
System.out.println(str.startsWith("**"));
//从指定位置开始判断是否以指定位置开头
System.out.println(str.startsWith("$$", 7));
//判断是否以指定位置结尾
System.out.println(str.endsWith("##"));
// 2.
//替换字符串中出现的所有的指定字符
System.out.println(str.replace("o", "O"));
//替换字符串中出现的所有子串
System.out.println(str.replaceAll("o", "&&&&&&"));
//替换字符串中第一次出现的字符子串
System.out.println(str.replaceFirst("o", "O"));
// 3.
//截取从第5号位置开始到结尾的子串
System.out.println(str.substring(5));
//截取从5位置到8位置的字符串
System.out.println(str.substring(5,8));
System.out.println();
System.out.println();
System.out.println();
// 4.
String s = "hello world hello java";
//将字符串按照空格拆分
String []a = s.split(" ");
for(int i = 0;i < a.length; ++ i)
System.out.println(a[i]);
System.out.println("----------");
//将字符串拆分成指定元素个数的字符数组
String []aa = s.split(" ", 3);
for(int i = 0;i < aa.length;i ++)
System.out.println(aa[i]);
String ss = "Hello Java..... ";
//判断字符串的长度
System.out.println(ss.length());
System.out.println(ss.trim().length());
//判断字符串是否为空
System.out.println("".isEmpty());
System.out.println(ss.isEmpty());
//字符串字符全部变为大写
System.out.println(ss.toUpperCase());
//所有字母都转化为小写
System.out.println(ss.toLowerCase());
//字符串连接
System.out.println(ss.concat("Hello World....."));
}
}