怎么使用注释文档
/**
* @author xiaoshuai
* @since JDK1.8
* @version 1.0
*
*/
public class ApiDemo {
/**
* sayHello中问候语“你好!”;
*/
public static final String INFO="你好!";
/**
*为给定用户添加问候语
* @param name 给定的用户名
* @return 一个含有问候语的字符串
*/
public String sayHello(String name){
return "你好!"+name;
}
}
字符串常量池
/**
* @author xiaoshuai
*/
public class StringDemo {
public static void main(String[] args) {
/**
* java推荐我们使用字面量形式创建字符串
* 对象,因为使用相同字面量创建字符串
* 对象会被重用
*/
String s1 = "123abc";
String s2 = "123abc";
//s2的地址和s1相同,说明重用的s1对象
System.out.println(s1==s2);//true
String s3="123abc";
System.out.println(s2==s3);//true
//修改内容会创建新的对象
s1 = s1+"!";
System.out.println("s1:"+s1);
//s2不受影响
System.out.println("s2:"+s2);
//s1和s2不再指向一个对象
System.out.println(s1==s2);//false
String s4 = '1'+23+"abc";
System.out.println("s4:"+s4);
System.out.println(s2==s4);
}
}
获得字符串长度
/**
* int length()
* 获取当前字符串长度
* @author xiaoshuai
*/
public class lengthDemo {
public static void main(String[] args) {
String str = "你好java";
System.out.println(str.length());
}
}
获得某些字符在字符串中的位置
/**
* int indexOf(String str)
* 查找给定字符串在当前字符串中的位置,
* 若当前字符串不包含给定内容则返回值为-1
* @author xiaoshuai
*/
public class IndexofDemo {
public static void main(String[] args) {
// 0123456789012345
String str = "thinking in java";
int index = str.indexOf("in");
System.out.println(index);//2
//从开始位置开始检索第一个位置的字符
index = str.indexOf("in",3);
System.out.println(index);//5
//检索开始最后一次出现的位置
index = str.lastIndexOf("in");
System.out.println(index);//9
}
}
从字符串中截取指定的内容
/**
* String substring(int start,int end)
* 截取当前字符串指定范围内的字符串
* 两个参数分别表示开始的下标和结束的下标
* 需要注意,java API 有一个特点,通常两个
* 数字表示范围时都是含头不含尾的
*/
public class Substring {
public static void main(String[] args) {
//01234567890
String str = "www.tedu.cn";
//截取域名
String sub = str.substring(4,8);
System.out.println(sub);
//一个参数的是从指定位置到结尾
sub = str.substring(4);
System.out.println(sub);
}
}
取出域名
/**
* 编写方法获取域名
* @author xioashuai
*/
public class Test {
public static void main(String[] args) {
String s1 = "www.baidu.com";
String s2 = "http://www.tedu.cn";
String s3 = "http://www.tarena.com.cn";
s1 = getHostName(s1);
s2 = getHostName(s2);
s3 = getHostName(s3);
System.out.println(s1);//baidu
System.out.println(s2);//tedu
System.out.println(s3);//tarena
}
public static String getHostName(String line){
int start = line.indexOf(".")+1;
int end = line.indexOf(".",start);
return line.substring(start,end);
}
}
去掉字符串左右的空格
/**
* String trim
* 去除字符串两边空白字符
* @author xiaoshuai
*/
public class TrimDemo {
public static void main(String[] args) {
String str = " hello ";
System.out.println(str);
str = str.trim();//这个方法是java中原有的
System.out.println(str);
}
}
根据位置获取字符
/**
* char charAt(int index)\
* 获取当前字符串中指定位置的字符
* @author xiaoshuai
*/
public class CharDemo {
public static void main(String[] args) {
// 0123456789012345
String str = "thinking in java";
char c = str.charAt(9);
System.out.println(c);//i 不算空格
System.out.println("=====================");
//判断回文 0 1 2 6 7 8
String line = "1234554321";
for(int i=0;i<line.length()/2;i++){
char c1 = line.charAt(i);
char c2 = line.charAt(line.length()-1-i);
if(c1!=c2){
System.out.println("不是回文");
break;
}
}
System.out.println("是回文");
}
}
判断字符串首尾的内容
/**
* boolean startWith(String str)
* boolean endsWith(String str)
* 判断当前字符串是否是以给定的字符串开始或结尾的
* @author xiaoshuai
*/
public class StartsWithDemo {
public static void main(String[] args) {
String str = "thinking in java";
boolean starts = str.startsWith("thin");
System.out.println(starts);
boolean ends = str.endsWith("ava");
System.out.println(ends);
}
}
转换大小写
/**
* String toUpperCase()
* String toLowerCase()
* 将当前字符串中的英文部分转化为全大写或全小写
* @author xiaoshuai
*/
public class ToUpperCaseDemo {
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);
}
}
基本数据类型换成字符串
/**
* String提供一组重载的静态方法:valueOf(a)
* 作用是将java其他类型转换成字符串
* @author xiaoshuai
*/
public class ValueOfDemo {
public static void main(String[] args) {
int a = 123;
String s1 =String.valueOf(a);
System.out.println(s1);//"123"
double b = 123.123;
String s2 = String.valueOf(b);
System.out.println(s2);//"123.123"
String s3 = a+"";
System.out.println(s3);//123
}
}
字符串频繁修改带来的损耗
/**
* 字符串频繁修改会带来性能的损耗
* @author xiaoshuai
*/
public class StringDemo2 {
public static void main(String[] args) {
String str = "a";
for(int i=0;i<10000000;i++){
str = str + "a";
}
System.out.println("程序结束了!");//程序会很慢,则需要改进方法
}
}
用StringBuilder操作解决损耗的问题
/**
* 字符串的特性决定着字符串不能平凡
* 修改,因为带来的问题是性能低,
* 内存开销大,因此java提供了一个类:java.lang.StringBuilder
* @author xiaoshuai
*/
public class StringBuilderDemo1 {
public static void main(String[] args) {
String str = "好好学习java";
StringBuffer builder = new StringBuffer(str);
/**
* 好好学习java
* 好好学习java,为了找个好工作
* append():追加的内容
*/
builder.append(",为了找个好工作!");
str = builder.toString();
System.out.println(str);
/**
* 好好学习java,为了找个好工作!
* 好好学习java,就是为了改变世界
* replace():追加的内容
*/
builder.replace(9,18,"就是为了改变世界!");
System.out.println(builder);
/**
* 好好学习java,就是为了改变世界!
* ,就是为了改变世界!
* delete():删除操作
*/
builder.delete(0,8);
System.out.println(builder);
/**
*,就是为了改变世界
* 活着,就是为了改变世界
* insert():插入内容
*/
builder.insert(0,"活着");
System.out.println(builder);
}
}