1. String 1.String对象是不可变的 String类的value属性是用来存放字符串里面的值的.这个属性是被final修饰的.final修饰的变量不能够被第二次赋值,所以字符串是不可变的. 2.java9 以后的String更节约空间,每个字符占用1个字节 String类型在java9之前采用的是char[]来保存对应的值,因此每个字符串占用2个字节.但是到了java9之后,采用byte[]数组加一个encode-flag字段来保存,字符串的每个字符只占用1个字节.所以java9的…
字符串,就是一系列字符的集合. Java里面提供了String,StringBuffer和StringBuilder三个类来封装字符串,其中StringBuilder类是到jdk 1.5才新增的.字符串操作可以说是几乎每门编程语言中所必不可少的,你真的理解其内幕吗? 下面让我们开始探秘之旅吧! 1.既然都是用来封装字符串的,那为什么还要3个类来封装呢? 2.它们三者之间到底有何区别? 3.它们三者之间的使用场景分别是什么? 4.它们三者之间从内存角度来看又是怎么来实现的呢? 5.它们三者之间的性…
如果要想实现观察者模式,则必须依靠java.util包中提供的Observable类和Observer接口. import java.util.* ; class House extends Observable{ // 表示房子可以被观察 private float price ;// 价钱 public House(float price){ this.price = price ; } public float getPrice(){ return this.price ; } publi…
顶哥说:Java是世界的,但项目不是! Java有非常多的类库,而我们不会也不用都去学习,毕竟你也仅仅掌握了你手机20%的功能却足够你使用,不是吗? 今天介绍以下类: l  Object l  Date l  DateFormat l  Calender l  包装类 1.Object类: 可以把Object类理解为java的第一个类,其他所有的类(包括自定义的)都默认继承该类.Object类中有两个比较重要的方法:equals()和toString()方法,我们在写JavaBean的时候都会重…
数字处理工具类BigDecimal和DecimalFormat Java提供的java.text.DecimalFormat类,帮助我们用最快的速度将数据格式化为我们想要的样子.例如,取两位小数 import java.math.BigDecimal; import java.text.DecimalFormat; import org.junit.Test; public class BigNumber { /**测试DecimalFormat类*/ @Test public void tes…
引言 String 类及其相关的StringBuilder.StringBuffer 类在 Java 中的使用相当的多,在各个公司的面试中也是必不可少的.因此,在本周,我打算花费一些时间来认真的研读一下 String.StringBuilder.StringBuffer类 的相关代码. String的不可变性 这个特性是 String 相当重要的一个特性,为了深入理解,我直接贴上其源代码 public String concat(String str) { int otherLen = str.…
一.基本概念 String 类对象代表不可变的Unicode字符序列,因此我们可以将String对象称为“不可变对象”. 那什么叫做“不可变对象”呢?  指的是对象内部的成员变量的值无法再改变.String类 的源码中发现字符串内容全部存储到value[]数组中,而变量value是final类型的,也就是常量(即只能被赋值一次). 这就是“不可变对象”的典型定义方式. 如:substring()是对字符串的截取操作,但本质是读取原字符串内容生成了新的字符串.测试代码如下:      String…
Java常用API(String类) 概述: java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例 1. 字符串不变:字符串的值在创建后不能被更改 String s1 = "abc"; s1 += "d"; System.out.println(s1); // "abcd" // 内存中有"abc","abcd"…
成鹏致远 | lcw.cnblog.com |2014-02-01 JAVA常用类库 1.StringBuffer StringBuffer是使用缓冲区的,本身也是操作字符串的,但是与String类不同,String类的内容一旦声明之后则不可改变,改变的只是其内存地址的指向,而StringBuffer中的内容是可以改变的 对于StringBuffer而言,本身是一个具体的操作类,所以不能你String那样采用直接赋值的方式进行对象的实例化,必须通过构造方法完成 当一个字符串的内容需要被经常改变时…
Java 常用类库与技巧[笔记] Java异常体系 Java异常相关知识 Java在其创立的时候就设置了比较有效的处理机制,其异常处理机制主要回答了三个问题:what,where,why what表示异常类型回答了什么被抛出 where表示异常堆栈跟踪回答了在哪儿抛出 why表示异常信息回答了为什么被抛出 error和exception的区别 Java异常体系 runtimeexception是不可预知的,程序应当自行避免,而非runtimeexception是可以预知的,从编译器中校验异常 从…
java的人应该都知道Apache commons的java常用类库吧,这个Guava和commons一样,封装出一套比jdk本身提供的常用类库强大.既然有了这个这么强大的类库,我们就没必要重复造轮子了.这东西怎么用,看看官网的文档和API.英文不好的,也有网上翻译出来共享的.开始Guava之旅猛击下面的链接 官方地址:http://code.google.com/p/guava-libraries/  [大家都知道这个要FQ哦,windows下推荐ziyoumen软件] 官方翻译文档:http…
对String而言: String是只读字符串,所引用的字符串不能被改变,一经定义,无法再增删改. String 定义的字符串保存在常量池里面,进行+操作时不能直接在原有基础上拼接. 每次+操作 : 隐式在堆上new了一个跟原字符串相同的StringBuilder对象,再调用append方法 拼接+后面的字符. 例如:  String str1="ss"; StringBuilder str2=new StringBuilder(ss); str1=str1+"oo"…
Java中常用来处理字符串的类有三个: String, StringBuffer和StringBuilder. 区别 三者都继承自CharSequence接口, 首先说明三者间主要区别 String字符串常量 StringBuffer字符串变量(线程安全) StringBuilder字符串变量(线程不安全) String 在Java中String对象是不可变的. 每次改变String类型的时候都会生成一个新的String对象, 然后将指针指向新的String对象. 如下代码中, str最终的值"…
一.除了使用String类存储字符串之外,还可以使用StringBuffer类存储字符串.而且它是比String类更高效的存储字符串的一种引用数据类型. 优点: 对字符串进行连接操作时,使用StringBuffer类可以大大提高程序的执行效率. 1.如何使用StringBuffer类 StringBuffer类位于java.util包中,是String类的增强类.声明StringBuffer对象并初始化的方法如下: StringBuffer sb = new StringBuffer(“青春无悔…
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hljs-comment, .hljs-template_comment, .diff .hljs-header, .hljs-javadoc { color: #998; font-style: italic; } .hljs-keyword, .css .rule .hljs-keyword, .h…
String:1.java语言中的字符串值属于String类,虽然有其它方法表示字符串(如字符数组),但java一般使用Sting类作为字符串的标准格式,java编译器把字符串值作为String对象.2.String对象一旦创建就不能改变.如果需要进行大量的字符串修改操作,应该使用StringButter/StringBuilder类或者字符数组,最终结果可以被转换成String对象. StringBuffer:1.StringBuffer 线程安全的可变字符序列2.一个类似于String的字符…
1.java.util.Date类 package LESSON9; import java.util.Date; public class demo1 { public static void main(String[] args) { Date date=new Date(); System.out.println(date); //大部分方法已过时(了解) System.out.println(date.toLocaleString());//以当前语言环境显示时间. System.out…
1.String Buffer 类 String 类所表示的字符串有一个局限就是字符串常量一旦声明则不可改变,只有内存地址的指向可以改变,如果要频繁修改字符串,需要使用String Buffer 类. String 类可以直接赋值实例化 , 但是StringBuffer类不行 , 必须实例化才可以操作. String 与 StringBuffer类都是CharSequence接口的子类,都可以通过自动向上转型的操作为CharSequence接口实例化. 常用操作方法: public String…
这三个类是平时开发中经常遇到的,主要差别是运行速度和线程安全,使用起来String最方便了,另外两个稍微复杂一些. 从运行速度角度看,StringBuilder>StringBuffer>String. 从线程安全角度看,StringBuffer是线程安全的,StringBuilder和String不是. 下面从代码的角度分析一下,示例代码: StringBuilder strBuilder = new StringBuilder(); strBuilder.append(100); strB…
相信大家看到过很多比较String和StringBuffer区别的文章,也明白这两者的区别,然而自从Java 5.0发布以后,我们的比较列表上将多出一个对象了,这就是StringBuilder类.String类是不可变类,任何对String的改变都会引发新的String对象的生成:而StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象,可变和不可变类这一对对象已经齐全了,那么为什么还要引入新的StringBuilder类干吗?相信大家都有此疑问,我也如此.下面,我们…
前言 上一节我们讲解了字符串的特性,除了字符串类外,还有两个我们也会经常用到的类,那就是StringBuffer和StringBuilder.因为字符串不可变,所以我们每次对字符串的修改比如通过连接concat.trim等都会创建一个新的字符串对象,那么我们如何在不创建字符串垃圾(大量临时的字符串)的 情况下操作字符串呢?答案则是使用StringBuffer和StringBuilder,StringBuffer是旧类,但是在Java 5中新增了StringBuilder,并且在Enum,Gene…
String 字符串常量,由String创建的字符内容,长度是不可改变,存放字符的数组被声明为final. 实际上String类操作字符串是通过建立一个StringBuffer,然后调用append():最后再toString()转换为String,效率上要低一些.并且原来的对象需要被回收,影响性能. 为什么String要设计为不可变? 1.字符串常量池的需要 字符串常量池是Java堆中一个特殊的存储区域,当创建一个String对象时,如果该字符串值已存在常量池中,就不会创建一个新的对象,而是引…
通常在涉及到StringBuilder和StringBuffer时中任何一个时,都应该想到另外一个并且在脑海中问自己是否用另外一个更加合适. 为什么这么说,请继续往下看,当然如果你已经对二者烂熟于胸自然就不必如此了.文章先介绍StringBuffer和StringBuilder,最后再 总结String(如果想要了解String的可以点击这里).StringBuffer.StringBuilder之间的区别.    StringBuffer是什么 StringBuffer是一个线程安全的.可变的…
CommonClassLibrary 常用类库        定时调度            定时调度指的是每到一个时刻,都会自动的产生某些特定的操作形式                    content (内容)            如果要想实现定时调度可以使用两个类: Timer TimerTask 类                        1.Timer 类                设置具体的调度时刻:                    调度: public voi…
例一:[看了威哥视频,下面更好理解] package sunjava; public class String_test { public static void main(String[] args) { String str1 = "hello world"; String str2 = new String("hello world"); String str3 = "hello world"; String str4 = new Stri…
1. 面试题:String,StringBuffer,StringBuilder的区别 ? 答:String是字符串内容不可变的,而StringBuffer和StringBuilder是字符串内容长度可变的:       StringBuffer是同步的,数据安全,效率低.       StringBuilder是不同步的,数据不安全,效率高. (1). 在执行速度方面的比较:StringBuilder > StringBuffer (2). StringBuffer与StringBuilder…
Java编程语言中为方便学习者学习,编制了许多类,这些类已经经过测试,都是我们编程的基础.如果不利用这些已存在的类,我们的编程工作将变得异常复杂并且效率低下.所以我们应尽可能多的掌握Java基本类库的内容.类库中的类按照其用途归属于不同的包中. 1.java.lang包 java.lang包 是Java中最常用的包,程序不需要注入,就可以使用该包中的类,利用包中的类可以设计最基本的Java程序. 2.java.awt包 java.awt包中的类提供了图形界面的创建方法,包括按钮.文本框.列表框.…
String s = "hello "; s += "world"; 这两行代码执行后,原始的String对象中的内容没有变 在这段代码中,s原先指向一个String对象,内容是hello,然后执行+操作 这时,s不指向原来那个对象了,而指向了另一个String对象,内容为hello world 原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了 而用关键字new调用构造器,总是会创建一个新的对象,无论内容是否相同.…
常用类库--MD5简单使用 MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致. 在JavaEE中用于密码校验,JavaWeb编程中使用得多. import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.securi…
背景 最近一口气看完了Joshua Bloch大神的Effective Java(下文简称EJ).书中以tips的形式罗列了Java开发中的最佳实践,每个tip都将其意图和要点压缩在了标题里,这种做法我很喜欢:一来比较亲切,比起难啃的系统书,EJ就像是一本Java的<俚语指南>:二来记忆起来十分方便,整本书过一遍就能望标题生义. 在通读这本书时,我发现作者多次列举现有类库中的实现的设计模式,我有意将其收集起来,这些实现相当经典,我觉得有必要落成一篇文章.随着以后对类库的理解越来越深,我也会持续…