「JavaDay13」常用对象学习心得

JavaDay13常见对象

主要学习四个类:

(1)StringBuffer;(2)Arrays工具类与数组两种查找;(3)Interger;(4)Character;

1:StringBuffer(掌握)

(1)作用

StringBuffer类被称为字符缓冲区,StringBuffer的出现是为了解决String类无法修改,StringBuffer类的作用是将字符串内容变得可以进行修改

(2)StringBuffer的构造方法

​ A:StringBuffer():无参构造

​ B:StringBuffer(int size):指定容量的字符串缓冲区,默认会有16字节的大小

​ C:StringBuffer(String str):指定字符串内容的初始化

(3)StringBuffer的常见功能

​ A:添加功能

​ append(String str):将任意类型数据加入缓冲区内,并返回字符串缓冲区本身;

​ insert(int offset String str):指定位置插入;

​ B:删除功能

​ deleteCharAt(int index):删除指定位置的字符串,返回本身;

​ delete(int start, int end):删除指定长度的字符串,返回本身;

​ C:替换功能

​ replace(int start, int end, String str):将xxx替换为xxx

​ D:反转功能

​ reverse():反转字符串

​ E:截取功能(注意这个返回值)

​ String substring(int start):返回一个String类型

​ String substring(int start, int end):返回一个String类型

(4)StringBuffer的练习

​ A:String和StringBuffer相互转换

String to buffer:

​ 方法1:调用构造方法转换

        StringBuffer sb = new StringBuffer(s);
        System.out.println("字符缓冲区类型:" + sb);

​ 方法2:调用append方法完成

        StringBuffer sb2 = new StringBuffer();
        sb2.append(s);
        System.out.println("字符缓冲区类型:" + sb2);

buffer to String:

​ 方法1:调用buffer方法toString

        String s2 = sb.toString();
        System.out.println("字符串类型:" + s2);

​ 方法2:调用String构造

        String s3 = new String(s);
        System.out.println("字符串类型"+s3);

案例演示:「StringAndBuffer.java」

​ B:字符串的拼接

​ 字符串的拼接使用StringBuffer的append方法完成拼接

​ C:把字符串反转

​ 字符串的反转可以使用StringBuffer中的reserve方法进行反转

案例:「Reverse.java」

​ D:判断一个字符串是否对称

案例:「StringSymmetry.java」

(5)思考题

小细节:

​ StringBuffer:同步的,数据安全,效率低。

​ StringBuilder:不同步的,数据不安全,效率高。

A:String,StringBuffer,StringBuilder的区别

​ 1:String与StringBuffer和StringBuilder的区别:

​ 前者一旦固定后,就不能对内容进行修改,而后两者可以对内容进行再次修改;

​ 2:StringBuffer与StringBuilder的区别:

​ StringBuffer与StringBuilder的区别在于,buffer是线程安全型,builder的效率更高,一般使用builder更多一些。

B:StringBuffer和数组的区别?

​ StringBuffer中,你可以传入不同类型的内容,int floate byte string boolena 等,他们都会被当作字符串对待,而在数组中只能保存相同类型的数据。

(6)注意的问题:

​ String作为形式参数,StringBuffer作为形式参数

package cn.itcast_08;

/*
 * 
 * 形式参数问题
 * String作为参数传递
 * StringBuffer作为参数传递 
 * 
 * 形式参数:
 * 		基本类型:形式参数的改变不影响实际参数
 * 		引用类型:形式参数的改变直接影响实际参数
 * 
 * 注意:
 * 		String作为参数传递,效果和基本类型作为参数传递是一样的。
 */
public class StringBufferDemo {
	public static void main(String[] args) {
		String s1 = "hello";
		String s2 = "world";
		System.out.println(s1 + "---" + s2);// hello---world
		change(s1, s2);
		System.out.println(s1 + "---" + s2);// hello---world

		StringBuffer sb1 = new StringBuffer("hello");
		StringBuffer sb2 = new StringBuffer("world");
		System.out.println(sb1 + "---" + sb2);// hello---world
		change(sb1, sb2);
		System.out.println(sb1 + "---" + sb2);// hello---worldworld

	}

	public static void change(StringBuffer sb1, StringBuffer sb2) {
		sb1 = sb2;
		sb2.append(sb1);
	}

	public static void change(String s1, String s2) {
		s1 = s2;
		s2 = s1 + s2;
	}
}

String作为参数传递:

​ 在方法change()中,不管如何交换,最终打印出来的结果还是本身,这就说明方法拿出来的是基本类型的内容,而不是指向地址;所以怎么修改打印的结果都不发生变化

StringBuffer作为参数传递:

​ 这里传入的是一个引用类型的对象,直接指向地址值,在方法内部变化的同时,也在外部跟随变化,所以change(sb1, sb2);之后打印出的结果是hello—worldworld

2:数组高级以及Arrays(掌握)

(1)排序

​ A:冒泡排序

案例演示:「ArraySortDemo.java」

​ B:选择排序

案例演示:「ArraySearchDemo.java」

(2)查找

​ A:基本查找

​ 针对数组无序的情况

B:二分查找(折半查找)

​ 针对数组有序的情况(千万不要先排序,在查找)

案例演示:「BinarySearch.java」

(3)Arrays工具类

​ A:是针对数组进行操作的工具类。包括排序和查找等功能。

​ B:方法

​ 把数组转成字符串:

​ - Arrays.toString(int[] arr)方法

​ 排序:

​ - Arrays.sort(int[ ] a)

​ 二分查找:

​ - binarysearch(int[ ] a, int key)

(5)把字符串中的字符进行排序
举例:
“edacbgf”
得到结果
“abcdefg”

​ (1)将字符串转换为字符数组

​ (2)对字符数组进行排序

​ (3)将排序结果由字符数组再转换为字符串

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)其他的功能(了解)

​ 进制转换

​ 使用方法:Integer.toString(i, radix)

​ 就可以将指定的10进制数字转换为指定进制

(5)JDK5的新特性

​ 自动装箱 基本类型–包装类型

​ 自动拆箱 包装类型–基本类型

​ 把下面的这个代码理解即可:

Integer i = 100;// 完整的写法:integer i = int 100 两个不同类型做赋值运算,自动装箱为包装类型;
i += 200;// (1)先拆箱,将包装类转换为基本类型,再装箱,将基本类型转换为包装类型Interger

(6)面试题
-128到127之间的数据缓冲池问题

​ 问题描述:向Integer()类型中传入(1)-128到127之间的值,(2)区间外的值,是否会有不同?

​ 回答:会有不同情况,如果传入的值在区间内,则直接从缓冲池进行获取,如果在区间外部,则需要重新开辟内存地址获取,通过使用"=="判断内存地址可以明确这个问题。

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)

​ E:把给定的字符转成小写

​ public static char toLowerCase(char ch)

(3)案例:
统计字符串中大写,小写及数字字符出现的次数

案例:「StringTimeDemo.java」

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值