Java中Stringbuffer、Arrays、Interger、Character类的特性

时间:2022-02-03 01:11:45

1:StringBuffer(掌握)
(1)用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,Java就提供了
一个字符串缓冲区类。StringBuffer供我们使用。
(2)StringBuffer的构造方法
A:StringBuffer()
B:StringBuffer(int size)
C:StringBuffer(String str)
(3)StringBuffer的常见功能
A:添加功能
public StringBuffer append(String str)将指定的字符串追加到此字符序列。

B:删除功能
public StringBuffer delete(int start,int end)移除此序列的子字符串中的字符。
public StringBuffer deleteCharAt(int index)移除此序列指定位置的 char。此序列将缩短一个 char。
C:替换功能
public StringBuffer replace(int start,int end,String str)使用给定 String 中的字符替换此序列的子字符串中的字符
D:反转功能
public StringBuffer reverse()将此字符序列用其反转形式取代。
E:截取功能(注意这个返回值)
public String substring(int start,int end)返回一个新的 String,它包含此序列当前所包含的字符子序列
public String substring(int start)返回一个新的 String,它包含此字符序列当前所包含的字符子序列。
(4)StringBuffer的练习(做一遍)
A:String和StringBuffer相互转换
String -- StringBuffer
构造方法
StringBuffer -- String
toString()方法
B:字符串的拼接
C:把字符串反转
D:判断一个字符串是否对称
(5)面试题
A:String,StringBuffer,StringBuilder的区别
String是不可改变的,StringBuffer,StringBuilder是可变的。
StringBuffer:同步的,数据安全,效率低。
StringBuilder:不同步的,数据不安全,效率高。
B:StringBuffer和数组的区别?
二者都是容器,但StringBuffer最终还是字符串,而字符数组只能装在任意数据类型,且只能是统一数据类型。
(6)注意的问题:
String作为形式参数,StringBuffer作为形式参数。
String做形参的时候可以看作是基本类型一样,并不会改变实参的值。
StringBuffer作为形参的时候,如果调用StringBuffer的方法的时候会改变对应实参的值,若只是简单的赋值的话,并不会改变实参的值。

2:数组高级以及Arrays(掌握)
(1)排序
A:冒泡排序
相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处。同理,其他的元素就可以排好。

public static void bubbleSort(int[] arr) {
for(int x=0; x<arr.length-1; x++) {
for(int y=0; y<arr.length-1-x; y++) {
if(arr[y] > arr[y+1]) {
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}

B:选择排序
把0索引的元素,和索引1以后的元素都进行比较,第一次完毕,最小值出现在了0索引。同理,其他的元素就可以排好。

public static void selectSort(int[] arr) {
for(int x=0; x<arr.length-1; x++) {
for(int y=x+1; y<arr.length; y++) {
if(arr[y] < arr[x]) {
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
}
(2)查找
A:基本查找
针对数组无序的情况

public static int getIndex(int[] arr,int value) {
int index = -1;

for(int x=0; x<arr.length; x++) {
if(arr[x] == value) {
index = x;
break;
}
}

return index;
}
B:二分查找(折半查找)
针对数组有序的情况(千万不要先排序,在查找)

public static int binarySearch(int[] arr,int value) {
int min = 0;
int max = arr.length-1;
int mid = (min+max)/2;

while(arr[mid] != value) {
if(arr[mid] > value) {
max = mid - 1;
}else if(arr[mid] < value) {
min = mid + 1;
}

if(min > max) {
return -1;
}

mid = (min+max)/2;
}

return mid;
}
(3)Arrays工具类
A:是针对数组进行操作的工具类。包括排序和查找等功能。
B:要掌握的方法(自己补齐方法)
把数组转成字符串:
排序:
二分查找:
(4)Arrays工具类的源码解析
(5)把字符串中的字符进行排序
举例:
"edacbgf"
得到结果
"abcdefg"

3:Integer(掌握)
(1)为了让基本类型的数据进行更多的操作,Java就为每种基本类型提供了对应的包装类类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
(2)Integer的构造方法
A:Integer i = new Integer(100);
B:Integer i = new Integer("100");
注意:这里的字符串必须是由数字字符组成
(3)String和int的相互转换
A:String -- int
Integer.parseInt("100");
B:int -- String
String.valueOf(100);
(4)其他的功能(了解)
进制转换
(5)JDK5的新特性
自动装箱 基本类型--引用类型
自动拆箱 引用类型--基本类型

把下面的这个代码理解即可:
Integer i = 100; //自动装箱
i += 200; //自动拆箱,自动装箱
一定要注意包装类类型是否是null,因此一般都会在代码中添加if判断是否为null。
(6)面试题
Integer类型在直接赋值的时候,在-128到127之间的数据,是直接从缓冲池中获取数据,不会创建新的对象。超过这一范围的值会重新new一个对象。因此对应的对象的地址不同。

4:Character(了解)
(1)Character构造方法
Character ch = new Character('a');
(2)要掌握的方法:(自己补齐)
A:判断给定的字符是否是大写
public static boolean isUpperCase(char ch)确定指定字符是否为大写字母。
B:判断给定的字符是否是小写
public static boolean isLowerCase(char ch)确定指定字符是否为小写字母。
C:判断给定的字符是否是数字字符
public static boolean isDigit(char ch)确定指定字符是否为数字。
D:把给定的字符转成大写
public static char toUpperCase(char ch)使用取自UnicodeData 文件的大小写映射信息将字符参数转换为大写。
E:把给定的字符转成小写
public static char toLowerCase(char ch)使用取自UnicodeData 文件的大小写映射信息将字符参数转换为小写。
(3)案例:
统计字符串中大写,小写及数字字符出现的次数

Java中Stringbuffer、Arrays、Interger、Character类的特性的更多相关文章

  1. java中的Arrays这个工具类你真的会用吗

    Java源码系列三-工具类Arrays ​ 今天分享java的源码的第三弹,Arrays这个工具类的源码.因为近期在复习数据结构,了解到Arrays里面的排序算法和二分查找等的实现,收益匪浅,决定研读 ...

  2. Java中是否可以继承String类,为什么

    Java中,是否可以继承String类?为什么? 答案: 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变. public final class ...

  3. JAVA中的集合容器操作类

    目录 JAVA中的集合容器操作类 List集合 ArrayList的操作方法说明 LinkedList Stack Set Map Queue 总结 JAVA中的集合容器操作类 Java容器类库总共分 ...

  4. Java中各种集合(字符串类)的线程安全性!!!

    Java中各种集合(字符串类)的线程安全性!!! 一.概念: 线程安全:就是当多线程访问时,采用了加锁的机制:即当一个线程访问该类的某个数据时,会对这个数据进行保护,其他线程不能对其访问,直到该线程读 ...

  5. Java中的集合和常用类

    Java中的常用类: ▪ Object类 ▪ Math类 ▪ String类和StringBuffer类(字符串) ▪ 8种基本类型所对应的包装类 ▪ java.util包中的类——Date类 Obj ...

  6. JAVA基础——Java 中必须了解的常用类

    Java中必须了解的常用类 一.包装类 相信各位小伙伴们对基本数据类型都非常熟悉,例如 int.float.double.boolean.char 等.基本数据类型是不具备对象的特性的,比如基本类型不 ...

  7. Java中是否可以调用一个类中的main方法?

    前几天面试的时候,被问到在Java中是否可以调用一个类中的main方法?回来测试了下,答案是可以!代码如下: main1中调用main2的主方法 package org.fiu.test; impor ...

  8. Java中必须了解的常用类

    1.Java的包装类 基本数据类型我们都很熟悉,例如:int.float.double.boolean.char等,基本数据类型不具备对象的特征,不能调用方法,一般能实现的功能比较简单,为了让基本数据 ...

  9. Java中使用 Long 表示枚举类

    Java中使用 Long 表示枚举类 在日常的开发过程中,很多时候我们需要枚举类(enum)来表示对象的各种状态,并且每个状态往往会关联到指定的数字,如: private enum Color { R ...

  10. java中常用的包、类、以及包中常用的类、方法、属性----sql和text&bsol;swing

    java中常用的包.类.以及包中常用的类.方法.属性 常用的包 java.io.*; java.util.*; java.lang.*; java.sql.*; java.text.*; java.a ...

随机推荐

  1. 从 IClassFactory 为 CLSID 为 &lbrace;00024500-0000-0000-C000-000000000046&rcub; 的 COM 组件创建实例失败,原因是出现以下错误&colon; 8001010a解决办法

    1.在命令行中输入:dcomcnfg,会显示出“组件服务”管理器 2.打开“组件服务->计算机->我的电脑->DCOM 配置”,找到“Microsoft Word文档”,单击右键,选 ...

  2. 用jquery解析JSON数据的方法以及字符串转换成json的3种方法

    用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是 json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject ...

  3. SharePoint 2013 中代码创建列表查阅项字段

    1.首先,打开VS创建两个List Definition,分别是Address和City,如下图: 2.City列表里修改Title为City Name,其实内部名称还是Title,注意一下: 3.给 ...

  4. java中的反射机制,以及如何通过反射获取一个类的构造方法 ,成员变量,方法,详细。。

    首先先说一下类的加载,流程.只有明确了类这个对象的存在才可以更好的理解反射的原因,以及反射的机制. 一.  类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三 ...

  5. 养成好的JAVA编码习惯

    原文:http://blog.csdn.net/lifuxiangcaohui/article/details/25231027 最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下 ...

  6. Android&lowbar;进化史和平台架构介绍

    一.Android平台发展史  2008年9月,谷歌正式发布了Android 1.0系统,全球第一台Android设备HTC (G1)  2009年4月,谷歌正式推出了Android 1.5      ...

  7. 杭州电 1372 Knight Moves(全站搜索模板称号)

    http://acm.hdu.edu.cn/showproblem.php?pid=1372 Knight Moves Time Limit: 2000/1000 MS (Java/Others)   ...

  8. SRAM与SDRAM的比较(转)

    原文:http://blog.csdn.net/fg8181/article/details/2278100 内存在电脑中起着举足轻重的作用,一般采用半导体存储单元,包括随机存储器(RAM),只读存储 ...

  9. SQL Server 2008 修改表名

     有一张表  修改起 if exists (select * from sys.objects where object_id = object_id(N'Table_1') and type in ...

  10. quick-cocos2d-x游戏开发【7】——scheduler 定时器

    定时器用的地方还是比較多的,游戏中的逻辑推断非常多都是採用每帧运行.quick对于schedule的封装在scheduler这个lua文件里.假设是第一次接触quick的话,可能依照官方的api来写一 ...