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 ...
随机推荐
- EF6学习笔记(六) 创建复杂的数据模型
EF6学习笔记总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 本篇原文地址:Creating a More Complex Data Model 本篇讲的比较碎,很多内容本人 ...
- visual2017专业版MFC编程环境搭建及第一个MFC程序的创建
1.MFC介绍及环境搭建 MFC全程为Microsoft Foundation class Library,即微软的基本类库,MFC实际上是一个庞大的文件库,它由指向文件和源文件组成. 首先,打开vi ...
- 《mysql必知必会》学习_第22章_20180809_欢
第22章:使用视图,视图是虚拟的表,以表形式呈现的是你查询的结果.并不是说在数据库里面真的存在这个表,但是是真的存在这些数据. select cust_name,cust_contact from c ...
- Hadoop 系列文章(三) 配置部署启动YARN及在YARN上运行MapReduce程序
这篇文章里我们将用配置 YARN,在 YARN 上运行 MapReduce. 1.修改 yarn-env.sh 环境变量里的 JAVA_HOME 路径 [bamboo@hadoop-senior ha ...
- Swift学习目录
本学习基于苹果官方Swift学习材料,保留了原版90%左右的内容(一些项目开发中基本不用的知识点没有整理),并根据理解进行整理.如对原版感兴趣,可以直接单击链接阅读和学习. 第一部分 基础篇 1.基本 ...
- 使用Phabricator进行代码审查
Pharicator 是FB的代码审查工具,主要开发者为Evan Priestley,是一个开源软件,可在Apache许可证第2版下作为自由软件分发.详细信息可查看官方文档.这里从应用的角度,一步一步 ...
- LabVIEW(十):数组和簇
一.数组 1.创建数组 (1).前面板右键>“数组.矩阵与簇”>数组. (2).前面板右键>(选择要添加的数组数据类型,比如创建数值数组)数值>将“数值输入控件”拖入数组中. ...
- nginx访问问题
root响应的路径:配置的路径(root指向的路径)+完整访问路径(location的路径)+静态文件alias响应的路径:配置路径+静态文件(去除location中配置的路径)
- vue项目打包上线时的配置操作
vue的图片路径,和背景图片路径打包后错误解决 2017-12-11 16:00 by muamaker, 7037 阅读, 0 评论, 收藏, 编辑 最近在研究vue,老实的按照官网提供的,搭建的了 ...
- 修改centos 7 系统时间
查看当前系统时间 date 修改当前系统时间 date -s "2018-2-22 19:10:30 查看硬件时间 hwclock --show 修改硬件时间 hwclock --set - ...