1. StringBuffer的截取功能: public String subString(int Start): public String subString(int Start, int end):包含首,不包含尾 返回类型是String类型,和前面几个功能不一样,本身没有发生变化. 2. 案例演示: package cn.itcast_06; /* * StringBuffer的截取功能:注意返回值类型不再是StringBuffer本身了 * public String substrin…
1. 对于三者使用的总结: (1).如果要操作少量的数据用 = String               (2).单线程操作字符串缓冲区下操作大量数据 = StringBuilder (3).多线程操作字符串缓冲区下操作大量数据 = StringBuffer 2. (1)String : 指向的是一个不可改变的字符串,要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成…
1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法.ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地尽量地小,不用对整个ConcurrentHashMap加锁(实际上就是对哈希表加锁). 2. ConcurrentHashMap的内部结构: ConcurrentHashMap为了提高本身…
1. String和StringBuffer的相互转换 思想是:A-----B的转换,我们把A转换为B,其实是为了使用B的功能:B-----A的转换,我们可能的结果是A类型,所以还要转换回来 2. 案例演示: package cn.itcast_07; /* * 为什么我们要讲解类之间的转换: * A -- B的转换 * 我们把A转换为B,其实是为了使用B的功能. * B -- A的转换 * 我们可能要的结果是A类型,所以还得转回来. * * String和StringBuffer的相互转换?…
1. 面试题:String,StringBuffer,StringBuilder的区别 ? 答:String是字符串内容不可变的,而StringBuffer和StringBuilder是字符串内容长度可变的:       StringBuffer是同步的,数据安全,效率低.       StringBuilder是不同步的,数据不安全,效率高. (1). 在执行速度方面的比较:StringBuilder > StringBuffer (2). StringBuffer与StringBuilder…
1. 案例演示: package cn.itcast_07; import java.util.Scanner; /* * 把字符串反转 */ public class StringBufferTest3 { public static void main(String[] args) { // 键盘录入数据 Scanner sc = new Scanner(System.in); System.out.println("请输入数据:"); String s = sc.nextLine…
1. StringBuffer的替换功能: public  StringBuffer   replace(int  start,  int  end, String  str): 2. 案例演示: package cn.itcast_04; /* * StringBuffer的替换功能: * public StringBuffer replace(int start,int end,String str):从start开始到end用str替换 */ public class StringBuff…
1. StringBuffer的删除功能: public StringBuffer  deleteCharAt(int index):删除指定位置的字符,并返回字符串缓冲区本身. public StringBuffer  delete(int start,  int end):删除从指定位置开始到指定位置结束的内容,包含左边,不包含右边,并返回字符串缓冲区本身. 2. 案例演示: package cn.itcast_03; /* * StringBuffer的删除功能 * public Stri…
1. StringBuffer类概述: (1)String的缺陷: 我们如果对字符串进行拼接操作,每次拼接,都会构造一个新的String对象,既耗时,又浪费空间.如下图: (2)StringBuffer弥补了String的缺陷 为了改进这个问题,而StringBuffer就可以解决这个问题. StringBuffer如何解决这个问题呢? StringBuffe第一次开辟比默认字符串大16byte的空间,然后在这16个字节字节写入被拼接的串.如果空间不够,以现有空间*2+2的方式翻一倍扩充. St…
1. 先看案例代码如下: package cn.itcast_07; /* * 把数组拼接成一个字符串 */ public class StringBufferTest2 { public static void main(String[] args) { // 定义一个数组 int[] arr = { 44, 33, 55, 11, 22 }; // 定义功能 // 方式1:用String做拼接的方式 String s1 = arrayToString(arr); System.out.pri…
1. StringBuffer 的反转功能: public StringBuffer reverse(): 2. 案例演示: package cn.itcast_05; /* * StringBuffer的反转功能: * public StringBuffer reverse() */ public class StringBufferDemo { public static void main(String[] args) { // 创建字符串缓冲区对象 StringBuffer sb = n…
1. StringBuffer的添加功能: public  StringBuffer append(String str):可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身. public  StringBuffer insert(int offset, String str):在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身. 注意:这两个方法都是返回字符串缓冲区对象本身,这样才能节省内存. 2. 案例演示: package cn.itcast_02;…
1. StringBuffer的构造方法: (1)StringBuffer(): (2)StringBuffer(CharSequence seq): (3)StringBuffer(int capacity): (4)StringBuffer(String str): 2. 案例演示: package cn.itcast_01; /* * 线程安全(多线程讲解) * 安全 -- 同步 -- 数据是安全的 * 不安全 -- 不同步 -- 效率高一些 * 安全和效率问题是永远困扰我们的问题. *…
1. Math.random()方法: Math.random()出现的数据是0.0<= x < 1.0之间,随机出现一个数据Math.random()>0.1概率是0.9 那么如下: Math.random()>0.1? 2:4  上面表示出现数字2的概率为0.9,出现数字4的概率为0.1 2. 上面出现的是两个数,如果我们案例需求是多个数,控制概率出现,该怎么办呢? 下面是一个案例: 做一个翻宝程序,通过返回数字0-5来判断中奖情况, 012345,这几个数字的出现的概率是0出…
接上文:Java基础——数组应用之字符串String类 一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类. 所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入.删除等操作,使用StringBuffer要更加适合一些. 在StringBuffer类中存在很多和String类一样的方…
1. 基础知识: Android(java)学习笔记61:多线程程序的引入    ~    Android(java)学习笔记76:多线程-定时器概述和使用 …
1.String字符串: java中用String类进行描述.对字符串进行了对象的封装.这样的好处是可以对字符串这种常见数据进行方便的操作.对象封装后,可以定义N多属性和行为. 如何定义字符串对象呢?String s = "abc";只要是双引号引起的数据都是字符串对象. 特点:字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中. String s1 = "abc"; // s1指向的内存中只有一个对象abc. String s2 = new String…
1.二.八.十.十六进制之间的转换  下面是示例代码,我们直接通过JDK工具库中的方法实现的,如下: public static Integer valueOf(String s, int radix) 参数为: String s:要解析的字符串 int radix:解析s字符串的进制 package com.himi.radix; /** * Java中如何实现十进制到其他进制的转换 * @author hebao * */ public class IntegerToOther { publ…
1.Java NIO 由以下几个核心部分组成: Channels(通道) Buffers(缓冲区) Selectors(选择器) 虽然Java NIO 中除此之外还有很多类和组件,Channel,Buffer 和 Selector 构成了核心的API.其它组件,如Pipe和FileLock,只不过是与三个核心组件共同使用的工具类. (1)Channel 和 Buffer 基本上,所有的 IO操作在NIO 中都从一个Channel 开始.Channel 有点像 流. 数据可以从Channel读到B…
一. JVM内存模型总体架构图:  方法区和堆由所有线程共享,其他区域都是线程私有的 二. JVM内存模型的结构分析: 1. 类装载器(classLoader) 类装载器,它是在java虚拟机中用途是把类从本地文件中装载到系统内存(运行时数据区)中. 类装载器装载本地文件到系统内存中的步骤: • 装载 :查找并装载类的二进制数据. • 链接 :执行验证 准备 解析(非必要). • 初始化 :把类型变量初始化为正确的变量. 2. 运行时数据区 (1)方法区(Method Area) 用于存储已被虚…
1. TreeSet存储自定义对象并遍历练习2: (1)Student.java package cn.itcast_06; /* * 如果一个类的元素要想能够进行自然排序,就必须实现自然排序接口 */ public class Student implements Comparable<Student> { private String name; private int age; public Student() { super(); } public Student(String nam…
常见 Java 异常解释:(译者注:非技术角度分析.阅读有风险,理解需谨慎:) 1. java.langjava.lang软件包是java语言的核心部分,它提供了java中的基础类. java.lang.Object,这是java.lang的根类,也是所有java类的超类. java.lang ArithmeticException 出现异常的运算条件时,抛出此异常.例如,一个整数"除以零" 你正在试图使用电脑解决一个自己解决不了的数学问题,请重新阅读你的算术表达式并再次尝试. Arr…
1.古往今来历史上皇帝通常只有一人.为了保证其唯一性,古人采用增加"防伪标识"的办法,如玉玺.更为简单的办法就是限制皇帝的创建.本案例中就是使用单例模式从而保证皇帝的唯一性.实例运行如下:代码: (1)Empreror.java:(定义的皇帝类) package himi.only; public class Empreror { private static Empreror empreror = null; private Empreror() { } public static…
1.最容易想到的估计就是利用String类的toCharArray(),再倒序输出数组的方法了: package himi.hebao05; public class TestDemo02 { public static void main(String[] args) { int i = 0; String text = "hebao I love you!"; String result = " "; char[] charArray = text.toChar…
 IO流操作的时候会出现很多问题,java中叫作异常,所以我们先介绍一下异常: 1. 程序的异常:Throwable(Throwable类是java中所有异常或错误的超类) (1)严重问题:Error(Throwable的子类) 我们不处理,这种问题一般都是很严重的,比如说内存溢出.这些问题不是代码能够解决.大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题.例如,Java虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续…
1. 引入: 如何控制输出数据的精度? >1. 使用Math.round方法 (1)Java如何把一个float(double)四舍五入到小数点后2位,4位,或者其它指定位数 ? 答:比如,如下案例: float a = 123.2354f: float b = (float)(Math.round(a*100))/100   // 输出123.24 如果想要3位就是把2个100都换成1000 (2)根据上面的规律,我们可以定义一个方法,专门用来四舍五入浮点数特定位数: package com.…
1. 分析:判断一个字符串是否是一个对称的字符串,我们只需要把字符串的第1个字符和最后1个字符,第2个字符和倒数第2个字符,…… 比较的次数是长度除以2.  方法1:通过取取索引对应值来进行一一比对  方法2:通过StringBuffer的取反方法reverse获取其逆向值 2. 案例演示: package cn.itcast_07; import java.util.Scanner; /* * 判断一个字符串是否是对称字符串 * 例如"abc"不是对称字符串,"aba&qu…
1. Java中线程的创建有两种方式:  (1)通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中. (2)通过实现Runnable接口,实例化Thread类. 2. 在实际应用中,我们经常用到多线程,如车站的售票系统,车站的各个售票口相当于各个线程.当我们做这个系统的时候可能会想到两种方式来实现,继承Thread类或实现Runnable接口,现在看一下这两种方式实现的两种结果. 继承thread类 package com.threadtest; class My…
1. 自定义类模拟LineNumberReader的获取行号功能案例 2. 代码实现: (1)MyBufferedReader.java: package cn.itcast_08; import java.io.IOException; import java.io.Reader; /* * 用Reader模拟BufferedReader的readLine()功能 * * readLine():一次读取一行,根据换行符判断是否结束,只返回内容,不返回换行符 */ public class My…
1. Collections类概述: 针对集合操作的工具类,都是静态方法.  2. Collection 和 Collections的区别: Collections是个java.util下的类,它包含有各种有关集合操作的静态方法. Collection是个java.util下的接口,它是各种集合结构的父接口. List, Set就是继承自Collection接口. 3. Collections类的成员方法(常用的): public static <T> void sort(List<T&…