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));
}
}
Java学习第一篇 — 字符串的更多相关文章
- 从.Net到Java学习第一篇——开篇
以前我常说,公司用什么技术我就学什么.可是对于java,我曾经一度以为“学java是不可能的,这辈子不可能学java的.”结果,一遇到公司转java,我就不得不跑路了,于是乎,回头一看N家公司交过社保 ...
- java 学习第一篇简单基础
Java基础 Java Java 和C#有着极为相似的语法. 和C#都是面向对象的高级程序语言. JAVA是一个开源,公开的语言,有着极其丰富的开源库和其他资源. JAVA分类 JAVA分SE EE ...
- Java学习第一篇:变量,数据类型,运算符,流程控制(简介)
一.安装和配置jdk 1.jdk是什么? (1).jdk全称是Java Development Kit, Java开发工具包; (2).jdk是sun公司开发的; (3).jdk主要包括:jre(Ja ...
- Java 学习 第一篇
1:Java文档注释:使用javadoc工具可以提取程序中文档注释来生成API文档:javadoc命令的基本用法:javadoc 选项 java源文件/包javadoc -d {} -windowti ...
- 从.Net到Java学习第二篇——IDEA and start spring boot
从.Net到Java学习第一篇——开篇 所谓工欲善其事,必先利其器,做java开发也一样,在比较了目前最流行的几个java IDE(eclipse,myeclipse.IDEA)之后,我果断选择IDE ...
- Java并发包下锁学习第一篇:介绍及学习安排
Java并发包下锁学习第一篇:介绍及学习安排 在Java并发编程中,实现锁的方式有两种,分别是:可以使用同步锁(synchronized关键字的锁),还有lock接口下的锁.从今天起,凯哥将带领大家一 ...
- JVM学习第一篇思考:一个Java代码是怎么运行起来的-上篇
JVM学习第一篇思考:一个Java代码是怎么运行起来的-上篇 作为一个使用Java语言开发的程序员,我们都知道,要想运行Java程序至少需要安装JRE(安装JDK也没问题).我们也知道我们Java程序 ...
- Java学习第一天
Java学习第一天 对于网络管理员或者黑客必须知道的八个cmd命令 详情请参考:http://www.2cto.com/os/201608/533964.html nbtstat ...
- LINQ to XML LINQ学习第一篇
LINQ to XML LINQ学习第一篇 1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: public static void CreateDoc ...
随机推荐
- JAVA核心问题(一)反射之引言 构造函数
反射,简单来说,就是在运行时获取Class对象的所有属性和方法,无论公有私有.虽然是一个基础问题,在这里还是全面的记录一下,认真对待! 获取构造函数 构造函数大致分为两种,public和非public ...
- SDWebImage源码分析
1.概述 SDWebImage是iOS开发中,被广泛使用的一个第三方开源库,提供了图片从加载.解析.处理.缓存.清理等一些列功能,让我们能够专心于业务的处理.本篇会从SDWebImage的源码,来一步 ...
- tomcat 启动报错org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalin
IDEA tomcat 7.0.53 严重: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed ...
- TCP/UDP OSI_layer 4
这篇文章主要复习OSI模型中的第4层:传输层,主要包含两个协议TCP .UDP. Transport 传输层 多路复用: 一个协议为多个上层协议或者多个上层应用提供一个统一的服务 TCP/UDP 通过 ...
- USB插入电脑的硬件检测和枚举流程
USB协议定义了设备的6种状态,仅在枚举过程种,设备就经历了4个状态的迁移:上电状态(Powered),默认状态(Default),地址状态(Address)和配置状态(Configured)(其他两 ...
- django rest framework mixins小结
本篇对drf中的mixins进行简要的分析总结. from rest_framework import viewsets 在这个viewsets中,只有5类Minxin,他们与http方法对应如下: ...
- spring boot -thymeleaf-日期转化
<span th:text="${#dates.format(date)}" ></span><span th:text="${#dates ...
- 前端下载excel文件功能的三种方法
1 从后端接收json数据,前端处理生成excel下载 JsonExportExcel的github地址:https://github.com/cuikangjie/JsonExportExcel 这 ...
- Hive的union和join操作
建表语句: create table tb_in_base ( id bigint, devid bigint, devname string ) partitioned b ...
- Dapper内部分享ppt
http://www.knowsky.com/887446.htmlhttp://www.tritac.com/bp-24-dapper-net-by-examplehttp://www.cnblog ...