• 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
  • 相关阅读:
    最小的k个数
    复杂链表的复制
    二叉树中和为某一值的路径
    二叉搜索树的后序遍历序列
    STL之Deque容器
    STL之迭代器
    STL之Vector容器
    STL之string
    STL(标准模板库)基本概念
    文件I/O
  • 原文地址:https://www.cnblogs.com/tangshengwei/p/6213243.html
Copyright © 2020-2023  润新知