示例一:
public class StringDemo1 {
public static void main(String[] args) {
String str1 = "helloworld";//字面量 直接量
String str2 = "helloworld";
System.out.println(str1==str2);//true
str2 = str2+"!";
System.out.println(str2);
System.out.println(str1);
System.out.println(str1==str2); //false
}
}
示例二:
/**
* 字符串是不变对象,指的是一旦创建该对象
* 内容不能发生改变,内容改变会创建新对象
*
* 字符串若是以字面量形式赋值,jvm会重用内容相同的
* 字符串对象。过程:
* 当jvm发现一个字面量形式的字符串赋值时,首先会检查
* 常量池中是否已经创建过表示该字符串的对象,若有则
* 直接使用该对象做重用,若没有就创建一个对象,然后存入
* 常量池并将该对象的地址返回。
*
*
* @author Administrator
*
*/
public class StringDemo2 {
public static void main(String[] args) {
String s1 = "123abc";
String s2 = "123abc";
/*
* java编译器在编译代码时有一个优化措施:
* 当一个计算表达式中计算符两边的内容都是字面量
* 时,编译器会将其进行运算然后将结果写入字节码
* 文件中。
* 所以,下面的表达式在字节码文件中的样子是:
* String s3 = "123abc";
*/
String s3 = "123"+"abc";
//字符与数字运算就是数学计算,结果不是"123abc"
String s4 = 1 + '2' + 3 + "abc";
String s5 = "123";
/*
* 虽然s6的内容还是123abc
* 但是表达式中有一个变量,编译器不会进行处理
*/
String s6 = s5 + "abc";
String s7 = new String("123abc");
System.out.println(s1 == s2);//true
System.out.println(s1 ==s3);//true
System.out.println(s1 == s4);//false
System.out.println(s1 == s6);//false
System.out.println(s1 == s7);//false
}
}
示例三:
/**
* int length()
* 获取当前字符串的长度(字符个数)
* @author Administrator
*
*/
public class StringDemo3 {
public static void main(String[] args) {
String str = "我爱java";
//输出字符串长度
System.out.println(str.length());//6
}
}
示例四:
/**
* int indexOf(String str)
* 查看给定字符串在当前字符串中的位置。
* 若当前字符串中包含给定字符串,会返回给定字符串第一个
* 字符在当前字符串中的位置,若当前字符串不含有给定字符
* 串,则返回-1.
* @author Administrator
*
*/
public class StringDemo4 {
public static void main(String[] args) {
// 0123456789012345
String str = "thinking in java";
//查找java在str的位置
int index = str.indexOf("java");
System.out.println(index);
/*
* int indexOf(String str,int fromIndex)
* 重载方法:从当前字符串的给定位置处开始检索
* 第一次出现给定字符串的位置
*/
//从第四个字符开始寻找第一次出现in的位置
index = str.indexOf("in",3);
System.out.println(index);
/*
* int lastIndexOf(String str)
* 查找最后一次出现给定字符串的位置
*/
index = str.lastIndexOf("in");
System.out.println(index);
/*
* 通常用来解决检查一个字符串中是否含有
* 要求的字符串,可以通过位置来得知。
* 甚至可以要求具体出现的位置。
*/
}
}
示例五:
/**
* String substring(int start,int end)
* 截取当前字符串中指定范围内的子字符串
*
* @author Administrator
*
*/
public class StringDemo5 {
public static void main(String[] args) {
// 012345678901234567890
String str = "http://www.oracle.com";
/*
* 在java API中,有一个特点。
* 用两个数字表示范围,通常都是"含头不含尾"的。
* 下面的参数就是:包含11位置的字符,但是不包含17位置
* 的字符
*/
String sub = str.substring(11,17);
System.out.println(sub);//oracle
/*
* String substring(int start)
* 从当前字符串的指定位置处开始,一直截取到字符串末尾
*/
sub = str.substring(7);
System.out.println(sub);
/*
* 获取一个URL的域名
* 思路:截取地址中第一个"."与第二个"."之间的字符串
* 即可
* 步骤:
* 1:找到第一个"."的位置
* 2:找到第二个"."的位置
* 3:截取第一个"."后面的第一个字符开始,到第二个
* "."的位置的所有字符。
*/
String url = "www.baidu.com";
//1
int start = url.indexOf(".");
//2
int end = url.indexOf(".",start+1);
//3
String name = url.substring(start+1,end);
System.out.println(name);
}
}
示例六:
/**
* String trim()
* 该方法会将当前字符串中左右两边的"空白"去除
*
* @author Administrator
*
*/
public class StringDemo6 {
public static void main(String[] args) {
String str = " hello ";
String trim = str.trim();
System.out.println(str);
System.out.println(trim);
}
}
示例七:
/**
* char charAt(int i)
* 返回当前字符串中给定位置处对应的字符
* @author Administrator
*
*/
public class StringDemo7 {
public static void main(String[] args) {
// 0123456789012345
String str = "thinking in java";
//查看第10个字符是什么
char c = str.charAt(9);
System.out.println(c);
}
}
示例八:
/**
* 检查一个字符串是否为"回文"
* @author Administrator
*
*/
public class StringDemo8 {
public static void main(String[] args) {
String str = "上海自来水来自上海";
/*
* 思路:只要判断字符串中正数位置的字符与
* 倒数位置上的字符都一样,就是回文了
*/
for(int i=0;i<str.length()/2;i++){
if(str.charAt(i)!=str.charAt(str.length()-i-1)){
System.out.println("不是回文!");
return;
}
}
System.out.println("是回文!");
}
}
示例九:
/**
* boolean startsWith(String str)
* 判断当前字符串是否是以给定字符串开始的
*
* boolean endsWith(String str)
* 判断当前字符串是否是以给定字符串结尾的
* @author Administrator
*
*/
public class StringDemo9 {
public static void main(String[] args) {
String str = "thinking in java";
//判断str是否以"th"开始
boolean starts = str.startsWith("th");
System.out.println("starts:"+starts);
//判断str是否以"ava"结尾
boolean ends = str.endsWith("ava");
System.out.println("ends:"+ends);
}
}
示例十:
/**
* String toUpperCase()
* 将当前字符串中英文部分转换为全大写
*
* String toLowerCase()
* 将当前字符串中英文部分转换为全小写
* @author Administrator
*
*/
public class StringDemo10 {
public static void main(String[] args) {
String str = "我爱Java";
String upper = str.toUpperCase();
System.out.println(upper);
String lower = str.toLowerCase();
System.out.println(lower);
/*
* 常被用作检查字符串中英文部分,完成忽略大小写操作
*/
}
}
示例十一:
/**
* 字符串提供了若干的重载静态方法valueOf()
* 通常用来将其他类型转换为字符串形式
* @author Administrator
*
*/
public class StringDemo11 {
public static void main(String[] args) {
int i = 100;
String s1 = String.valueOf(i);
System.out.println(s1);
double d = 100.123;
String s2 = String.valueOf(d);
System.out.println(s2);
//任何类型与字符串连接都是字符串
String s3 = i + "";
}
}
示例十二:
/**
* StringBuilder用来解决修改字符串导致的内存消耗问题
* StringBuilder内部维护一个可变的字符数组,所以修改的
* 字符串内容都是在当前对象中完成,而不会创建新对象
* StringBuilder提供了修改字符串的相关方法:增删改插
* @author Administrator
*
*/
public class StringBuilderDemo1 {
public static void main(String[] args) {
String str = "好好学习java";
StringBuilder builder = new StringBuilder(str);
/*
* 获取StringBuilder表示的字符串
* String toString()
*/
str = builder.toString();
//好好学习java
System.out.println(str);
//好好学习java,为了改变世界!
/*
* StringBuilder append(String str)
* 该方法用于向当前字符串末尾追加给定字符串
* 返回值还是当前StringBuilder.
*/
builder.append(",为了改变世界!");
str = builder.toString();
System.out.println(str);
//好好学习java,就是为了改变世界!
/*
* StringBuilder insert(int i,String str)
* 在当前字符串的指定位置插入给定字符串,原
* 位置及后续字符串顺序向后移动
*/
builder.insert(9, "就是");
str = builder.toString();
System.out.println(str);
//活着,就是为了改变世界!
/*
* StringBuilder replace(int start,int end,String s)
* 将当前字符串中指定范围内的字符串替换为给定的字符串
*/
builder.replace(0, 8, "活着");
str = builder.toString();
System.out.println(str);
//活着,就是为了改变世界
/*
* StringBuilder delete(int start,int end)
* 删除当前字符串中指定范围内的字符串
*/
builder.delete(11, 12);
str = builder.toString();
System.out.println(str);
/*
* reverse()
* 将当前字符串内容反转
*/
builder.reverse();
str = builder.toString();
System.out.println(str);
}
}