JAVASE02-Unit01: API文档 字符串基本操作

Posted 唐胜伟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVASE02-Unit01: API文档 字符串基本操作相关的知识,希望对你有一定的参考价值。

    API文档 、 字符串基本操作    

 

文档注释

package day01;
/**
 * 文档注释只能定义在三个地方:
 * 类,方法,常量
 * 
 * 文档注释是功能注释,用来说明功能作用
 * 在类上使用的目的是说明当前类的设计目的
 * 
 * @author adminitartor
 * @version 1.0
 * @see java.lang.String
 * @since JDK1.0
 *
 */
public class DocApiDemo {
    /**
     * sayHello方法中的问候语
     */
    public static final String INFO = "你好!";
    
    /**
     * 对给定用户添加一个问候语
     * @param name 给定的用户名
     * @return 添加了问候语的字符串
     */
    public String sayHello(String name){
        return "你好!"+name;
    }
}
DocApiDemo.java

频繁修改字符串带来的性能开销问题

package day01;
/**
 * 频繁修改字符串带来的性能开销问题
 * @author adminitartor
 *
 */
public class StringDemo2 {
    public static void main(String[] args) {
        String str = "a";
        for(int i=0;i<1000000;i++){
            str += "a";
        }
        
    }
}
StringDemo.java

字符串常量池

package day01;

import java.util.Random;

/**
 * 字符串常量池
 * java对字符串做了一个优化措施,即:使用字面量形式
 * 创建字符串对象时,会将该对象存入常量池缓存起来,
 * 当再次创建该内容字符串时会重用对象,减少内存开销。
 * 正因为重用相同内容字符串对象,所以该对象变为"公用"
 * 对象,那么字符串被规定为是不便对象,即字符串对象一
 * 旦创建内容不可改变,若改变必定创建新对象。
 * @author adminitartor
 *
 */
public class StringDemo1 {
    public static void main(String[] args) {
        String s1 = "123abc";
        //字面量形式创建字符串会重用之前创建的对象
        String s2 = "123abc";//重用s1创建的对象
        
        System.out.println(s1==s2);//true
        
        String s3 = "123abc";
        System.out.println(s1==s3);//true
        
        //new 一定创建新对象
        String s4 = new String("123abc");
        System.out.println(s1==s4);//false
        
        //修改内容会创建新对象
        s1 = s1+"!";
        System.out.println(s1);//123abc!
        System.out.println(s2);//123abc
        System.out.println(s1==s2);//false
        
        /*
         * 编译器在编译源程序时当发现一个计算表达式
         * 计算符号两边的内容都是字面量时,会直接运算
         * 并将结果编译到class文件中,所以下面的代码
         * 在class文件中的样子为:
         * 
         * String s5 = "123abc";
         * 
         * 所以s5会重用s2对象
         */
        String s5 = "123"+"abc";
        System.out.println(s2==s5);
        
        String s = "123";
        String s6 = s + "abc";
        System.out.println(s2==s6);
        
        String s7 = 1+"23"+"abc";
        System.out.println(s2==s7);
        
        String s8 = \'1\'+23+"abc";
        System.out.println(s2==s8);
    
    }
    
}
StringDemo.java

截取指定范围内的字符串

package day01;
/**
 * String substring(int start,int end)
 * 截取指定范围内的字符串
 * JAVA API有一个特点,通常使用两个数字表示范围
 * 时都是"含头不含尾"的
 * @author adminitartor
 *
 */
public class String_Substring {
    public static void main(String[] args) {
        //            01234567890123
        String str = "www.oracle.com";
        //截取域名
        String sub = str.substring(4, 10);
        System.out.println(sub);
        
        sub = str.substring(4);
        System.out.println(sub);
    
        //通用截取域名操作
        str = "www.sohu.com.cn";
        int s = str.indexOf(".")+1;
        int e = str.indexOf(".",s);
        sub = str.substring(s, e);
        System.out.println(sub);
        
        
    
    }
}
String_substring

将当前字符串中的英文部分转换为全大写或全小写

package day01;
/**
 * String toUpperCase()
 * String toLowerCase()
 * 将当前字符串中的英文部分转换为全大写或全小写
 * @author adminitartor
 *
 */
public class String_ToUpperCase {
    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_ToUpperCase.java

去除当前字符串两边的空白字符

package day01;
/**
 * String trim()
 * 去除当前字符串两边的空白字符
 * @author adminitartor
 *
 */
public class String_Trim {
    public static void main(String[] args) {
        String str = "   hello            ";
        System.out.println(str);
        str = str.trim();
        System.out.println(str);
    }
}
String_Trim.java

将java中其他类型转换为一个字符串

package day01;
/**
 * String提供了一组静态方法valueOf
 * 作用是将java中其他类型转换为一个字符串
 * 常用来将基本类型转换为字符串
 * @author adminitartor
 *
 */
public class String_ValueOf {
    public static void main(String[] args) {
        int a = 123;
        String iStr = String.valueOf(a);
        System.out.println(iStr+4);
        
        double d = 123.123;
        String dStr = String.valueOf(d);
        System.out.println(dStr+4);
        
        iStr = a + "";
        
    }
}
String_ValueOf.java

该类为了解决频繁修改字符串带来的性能损耗问题

package day01;
/**
 * java.lang.StringBuilder
 * 该类为了解决频繁修改字符串带来的性能损耗问题
 * 其提供了编辑字符串的相关方法:
 * 增,删,改,插 
 * @author adminitartor
 *
 */
public class StringBuilderDemo {
    public static void main(String[] args) {
        String str = "努力学习java";
        /*
         * 想修改字符串则创建StringBuilder并将
         * 要修改的字符串内容传入。
         */
        StringBuffer builder
            = new StringBuffer(str);
        
        
        /*
         * StringBuilder append(String str)
         * 在当前字符串末尾追加给定内容
         * 
         * 努力学习java
         * 努力学习java,为了找个好工作!
         */
        builder.append(",为了找个好工作!");
        //toString可以获取builder内部的字符串
        str = builder.toString();
        System.out.println(str);
        
        /*
         * StringBuilder replace(int s,int e,String str)
         * 将当前字符串指定范围内的字符串内容替换为给定内容
         * 
         * 努力学习java,为了找个好工作!
         * 努力学习java,就是为了改变世界!
         */
        builder.replace(9, 16, "就是为了改变世界");
        System.out.println(builder.toString());
        
        
        /*
         * StringBuilder delete(int s,int e)
         * 删除指定范围内的字符串
         * 
         * 努力学习java,就是为了改变世界!
         * ,就是为了改变世界!
         */
        builder.delete(0, 8);
        System.out.println(builder.toString());
        
        /*
         * StringBuilder insert(int index,String str)
         * 在指定位置插入指定字符串
         * 
         * ,就是为了改变世界!
         * 活着,就是为了改变世界!
         */
        builder.insert(0, "活着");
        System.out.println(builder.toString());
        
        //反转字符串
        builder.reverse();
        System.out.println(builder.toString());
    }
}
StringBuilderDemo.java

使用StringBuilder修改字符串的效率

package day01;
/**
 * 使用StringBuilder修改字符串的效率
 * @author adminitartor
 *
 */
public class StringBuilderDemo2 {
    public static void main(String[] args) {
        StringBuilder builder 
            = new StringBuilder("a");
        for(int i=0;i<1000000;i++){
            builder.append("a");
        }
    }
}
StringBuilderDemo2.java

返回当前字符串中指定位置处的字符

package day01;
/**
 * char charAt(int index)
 * 返回当前字符串中指定位置处的字符
 * @author adminitartor
 *
 */
public class String_CharAt {
    public static void main(String[] args) {
//                      0123456789012345
        String str = "thinking in java";
        char c = str.charAt(9);
        System.out.println(c);//\'i\'
        
        /*
         * 检测回文
         * 上海自来水来自海上
         */
        str = "上海自来水自来海上";
        for(int i=0;i<str.length()/2;i++){
            if(str.charAt(i)!=
               str.charAt(str.length()-1-i)        
            ){
                System.out.println("不是回文");
                return;//结束方法
            }
        }
        System.out.println("是回文");
    }
}
String_CharAt.java

查找给定字符串在当前字符串中的位置(下标)

package day01;
/**
 * int indexOf(String str)
 * 查找给定字符串在当前字符串中的位置(下标)
 * 若当前字符串不含有给定内容则返回指为-1
 * @author adminitartor
 *
 */
public class String_IndexOf {
    public static void main(String[] args) {
        //java编程思想
        //            0123456789012345
        String str = "thinking in java";
        
        int index = str.indexOf("in");
        System.out.println("index:"+index);
        //从指定位置处开始查找"in"第一次出现的位置
        index = str.indexOf("in",3);
        System.out.println("index:"+index);
        //查找最后一次出现"in"的位置
        index = str.lastIndexOf("in");
        System.out.println("index:"+index);
        
    }
}
String_IndexOf.java

返回当前字符串的长度(字符个数)

package day01;
/**
 * int length()方法
 * 返回当前字符串的长度(字符个数)
 * @author adminitartor
 *
 */
public class String_Length {
    public static void main(String[] args) {
        String str = "我爱java";
        int len = str.length();
        System.out.println("len:"+len);
    }
}
String_Length.java

判断当前字符串是否是以给定字符串起始或结尾的

package day01;
/**
 * boolean startsWith(String str)
 * boolean endsWith(String str)
 * 判断当前字符串是否是以给定字符串起始或结尾的
 * @author adminitartor
 *
 */
public class String_StartsWith {
    public static void main(String[] args) {
        String str = "thinking in java";
        boolean starts = str.startsWith("think");
        System.out.println("starts:"+starts);
        
        boolean ends = str.endsWith("ava");
        System.out.println("ends:"+ends);
    }
}
String_StartsWith.java

 

以上是关于JAVASE02-Unit01: API文档 字符串基本操作的主要内容,如果未能解决你的问题,请参考以下文章

JAVASE02-Unit05: 集合操作 —— 查找表

JAVASE02-Unit04: 集合框架 集合操作 —— 线性表

JAVASE02-Unit08: 文本数据IO操作 异常处理

JAVASE02-Unit03: 日期操作 集合框架

JAVASE02-Unit010: 多线程基础 TCP通信

JAVASE02-Unit07: 基本IO操作 文本数据IO操作