Java学习第一篇 — 字符串

package StringTest;

public class TestString {
    public static void main(String[] args){
//        String str="aaaddd";
//        String str2=str.substring(2,5);
//        System.out.println(str);
//        System.out.println(str2);
        //编译器做了优化,直接在编译的时候将字符串进行拼接
        String str1="hello"+"java";
        String str2="hellojava";
        System.out.println(str1==str2);
        String str3="hello";
        String str4="java";
        //编译的时候不知道变量中存储的是什么,所以没办法在编译的时候优化
        String str5=str3+str4;
        System.out.println(str2==str5);
        System.out.println(str2.equals(str5));

        /*
        输出:
        true
        false
        true

        进行字符串比较时,必须使用equals()函数

         */
    }
}
package StringTest;

/*
    *测试StringBuilder、StringBuffer可变字符序列
    *
    * */
public class TestStringBuilder {
    public static void main(String[] args){
        String str;

        //StringBuilder线程不安全,效率高(一般使用这个);StringBuffer线程安全,效率低。
        StringBuilder sb=new StringBuilder("abcdef");

        System.out.println(Integer.toHexString(sb.hashCode()));   //转换成哈希字符串输出
        System.out.println(sb);

        sb.setCharAt(2,‘M‘);  //把下标为2的字符替换为"M"
        System.out.println(Integer.toHexString(sb.hashCode()));   //转换成哈希字符串输出
        System.out.println(sb);

        /*
        输出:
        1b6d3586
        abcdef
        1b6d3586
        abMdef

        结果显示:StringBuilder定义的字符串在改变字符时不会产生多个对象,在原字符中直接替换,节约内存
         */

    }
}
package StringTest;

public class TestStringBuilder2 {
    public static void main(String[] args){
        StringBuilder sb=new StringBuilder();

        for(int i=0;i<26;i++){
            sb.append((char)(‘a‘+i));       //26个英文字母
        }
        System.out.println(sb);
        sb.reverse();       //字符倒序
        System.out.println(sb);

        sb.setCharAt(3,‘高‘);   //改字符
        System.out.println(sb);

        sb.insert(0,‘我‘).insert(6,‘爱‘);    //链式调用。核心就是:该方法调用了return this,把自己传回来。
        System.out.println(sb);

        sb.delete(10,23);      //删除区间内的字符(字符下标)
        System.out.println(sb);
        /*
        输出:
        abcdefghijklmnopqrstuvwxyz
        zyxwvutsrqponmlkjihgfedcba
        zyx高vutsrqponmlkjihgfedcba
        我zyx高v爱utsrqponmlkjihgfedcba
        我zyx高v爱utsedcba
         */
    }
}
package StringTest;
/*
 测试可变字符序列和不可变字符序列使用的陷阱
*/

public class TestStringBuilder3 {
    public static void main(String[] args){
        /*
         使用String进行字符串的拼接
         */
        String str8="";
        long num1=Runtime.getRuntime().freeMemory();//获取系统剩余内存
        long time1=System.currentTimeMillis(); //获取系统的当前时间
        for(int i=0;i<5000;i++){
            str8=str8+i;   //相当于产生了10000个对象,绝对不能出现
        }
        long num2=Runtime.getRuntime().freeMemory();
        long time2=System.currentTimeMillis();
        System.out.println("String占用内存:"+(num1-num2));
        System.out.println("String占用时间:"+(time2-time1));

        StringBuilder sb1=new StringBuilder("");
        long num3=Runtime.getRuntime().freeMemory();
        long time3=System.currentTimeMillis();
        for(int i=0;i<5000;i++){
            sb1.append(i);   //直接将字符加到sb1后面,不会产生多余的对象。
        }
        long num4=Runtime.getRuntime().freeMemory();
        long time4=System.currentTimeMillis();
        System.out.println("StringBuilder占用内存:"+(num3-num4));
        System.out.println("StringBuilder占用时间:"+(time4-time3));
    }
}

原文地址:https://www.cnblogs.com/zjrblog/p/10700754.html

时间: 2024-07-30 13:52:10

Java学习第一篇 — 字符串的相关文章

Java学习第一篇---Java入门准备

这是我的第一篇博客,以后也会写自己学习Java的过程.一些知识点.心得体会等,以此鼓励自己坚持学习! 现在开始了我学习Java的生涯:[个人下载的Jdk版本是jdk-8u5-windows-x64] 1.安装之后的目录: ->Source Code: 安装这个选项将会安装Java所有核心类库的源代码 ->bin: 该路径下存放了JDK的各种工具命令,常用的Javac.java等命令. ->db: 该路径是安装Java DB的路径[DB(data base,数据库)是依照某种数据模型组织起

从.Net到Java学习第一篇

以前我常说,公司用什么技术我就学什么.可是对于java,我曾经一度以为“学java是不可能的,这辈子不可能学java的.”结果,一遇到公司转java,我就不得不跑路了,于是乎,回头一看N家公司交过社保,连我自己都有点惊讶,居然有这么多家公司了.对于java的梗,这是有历史缘由的,大二的时候同一大波人去蓝杰参加java培训,当时一个空心的菱形怎么也写不出来,我写来写去就是一个实心的砖头,结果培训老师实在看不下去了,就说:“唉!你不适合搞java”,我看了下一同前去的几个同学一下子就都写出来了,搞得

Java学习第一篇 -- 安装JDK

1. 下载Oracle JDK        Oracle JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2. 在Windows中安装JDK        安装时请选择目录中不包含空格.中文等特殊字符以免出现未知错误.        假设安装目录:D:\Java\jdk1.8.0\        选择计算机->右击选择属性->高级系统设置->环境变量        方法一:          

Java图像处理最快技术:ImageJ 学习第一篇

ImageJ是世界上最快的纯Java的图像处理程序.它可以过滤一个2048x2048的图像在0.1秒内(*).这是每秒40万像素!ImageJ的扩展通过使用内置的文本编辑器和Java编译器的ImageJ的开发插件.500多插件可用. 数据类型:8位灰度或索引色,16位无符号整数,32位浮点和RGB色彩. 文件格式:读写所有支持的数据类型为TIFF(非压缩)或原始数据.打开和保存GIF,JPEG,BMP,PNG,PGM,FITS和ASCII.打开DICOM.使用URL打开的TIFF.GIF文件.J

ImageJ 学习第一篇

ImageJ是世界上最快的纯Java的图像处理程序.它可以过滤一个2048x2048的图像在0.1秒内(*).这是每秒40万像素!ImageJ的扩展通过使用内置的文本编辑器和Java编译器的ImageJ的开发插件.500多插件可用. 数据类型:8位灰度或索引色,16位无符号整数,32位浮点和RGB色彩. 文件格式:读写所有支持的数据类型为TIFF(非压缩)或原始数据.打开和保存GIF,JPEG,BMP,PNG,PGM,FITS和ASCII.打开DICOM.使用URL打开的TIFF.GIF文件.J

201671010140. 2016-2017-2 《Java程序设计》java学习第一周

   java学习第一周        本周是新学期的开端,也是新的学习进程的开端,第一次接触java这门课程,首先书本的厚度就给我一种无形的压力,这注定了,这门课程不会是轻松的,同时一种全新的学习方式:反转课堂,全新的尝试,忐忑的同时,又对这段新的学习路途充满了期待.         第一章,其实就是对java这门课程学习的一个铺垫和前期热身,第二章则是帮助我们了解并试着运用有关工具及了解java开发环境,通过阅读书本,相关课件,相关工具使用文件,同时在上机操作的过程中逐渐吸收知识.     

Java学习笔记_18_字符串、包装类、原始数据类剪得转换

18. 字符串.包装类.原始数据类剪得转换: 各个转换如下: 1>String 转换成Integer: Integer integer = new Integer("string");或 Integer Integer = Integer.valueOf(String): 注:String必须是数字字符串,如:"1232". 2>Integer 转换成String: String str = Integer.toString(); 3>Intege

C++的笔记学习第一篇,认识C++

在一个类中包含两种成员: 数据和函数,分别称为C++数据成员和成员函数. 关于类: 类是C++新增加的重要数据类型,有了类,就就可以实现面向对象程序设计方法中的封装.信息隐蔽.继承.派生.多态等功能. 关于函数的重载 在编程时,有时我们要实现的是同一类的功能,只是有些细节不同.例如希望从3个数中找出其中的最大者,而每次求最大数时数据的类型不同,可能是3个整数.3个双精度数或3个长整数. 程序设计者往往会分别设计出3个不同名的函数,其函数原型为:int max1(int a int b, int

Java 学习第一步-JDK安装和Java环境变量配置

Java学习第一步——JDK安装及Java环境变量配置 [原文] 2014-05-30 9:09  Java SE  阿超  9046 views Java作为当下很主流的编程语言,学习Java的朋友也越来越多了,作为一门面向对象的编程语言,Java也有着安全.高效等诸多有点.从TIOBE(TIOBE排行榜是根据互联网上有经验的程序员.课程和第三方厂商的数量,并使用搜索引擎(如Google.Bing.Yahoo!.百度)以及Wikipedia.Amazon.YouTube统计出排名数据,只是反映