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 ...
随机推荐
- 完整的SOPC开发流程体验
课程目标:学习并掌握完整的SOPC开发流程. 开发环境:Quartus15.1 学习内容:1.使用QSYS工具建立能够运行流水灯项目的NIOS II处理器系统 2.在quartus ii中添加NIOS ...
- Centos6.5安装中文支持和中文输入法
先来讲中文支持: 之前在网上查了不少资料,很多网友在网上都说,在shell命令下输入: # vi /etc/sysconfig/i18n 然后修改LANG="en_US.UTF-8& ...
- python 使用unittest进行单元测试
import unittest import HTMLTestRunner """ Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面 ...
- Java学习笔记54(反射详解)
反射概念: java反射机制是在运行状态中,对于任意一个类,都能知道所有属性和方法 对于任意一个对象都能调用它的任意一个方法和属性,这种动态获取和调用的功能称为java的反射机制 实际作用: 已经完成 ...
- Nginx 负载均衡与反向代理
通过设置权重来轮询 weight server 192.168.1.62 weight=5 server 192.168.63 weight=1 ip_hash 第3方均衡策略 fair url_h ...
- Linux - 查看文件信息的三个命令
ls命令 - list directory contents 显示文件详细信息:ls -l <file name> file命令 - determine file type determi ...
- 急速JavaScript全栈教程
3 天前 · 3k 次阅读 急速JavaScript全栈教程 javascript node.js mongodb 140 自从一年前发布了Vuejs小书的电子书,也有些日子没有碰过它们了,现在 ...
- vi/vim编辑器的使用
命令模式下操作替换字符:%s/str1/str2/g删除全部内容:%d不保存退出:q!保存退出:wq! 执行shell命令:!command 如!ls -l 在下一行插入shell命令执行 ...
- android 代码混淆示例
参考其它资料为项目代码做了一下混淆 项目中使用了 slidingmenu actionbarsherlock fastjson volley httpclient 等第三方库, 并使用了 ...
- 《Kubernetes权威指南》——运维技巧
1 Node的隔离和恢复 方法1: 创建新的Node配置文件指定spec.unschedulable: true 通过kubectl replace完成对Node的状态修改 kubectl repla ...