【JavaSE学习笔记】常用类介绍02_String,StringBuffer,Integer
来源:互联网 发布:太平洋软件网站 编辑:程序博客网 时间:2024/05/21 23:42
常用类介绍02
A.String
1)上一章(常用类介绍01-C中已经介绍了String类大部分功能,本章介绍剩下小部分功能)
2)替换功能
String replace(char old, char new):将老的字符替换成一个新的字符
// 测试类public class Demo01 {public static void main(String[] args) {String s = "helloworld";String s2 = s.replace('h', 'H');System.out.println(s2); // Helloworld}}String replace(String old,String new):将老的字符串替换成新的字符串
// 测试类public class Demo01 {public static void main(String[] args) {String s = "helloworld";String s2 = s.replace("wor", "Wor");System.out.println(s2); // helloWorld}}String trim():去除字符串两端的空格
// 测试类public class Demo01 {public static void main(String[] args) {String s = " hello world ";String s2 = s.trim();System.out.println(s2); // hello world}}
3)按字典顺序,比较两个字符串
int compareTo(String str):
// 测试类public class Demo01 {public static void main(String[] args) {String s1 = "helloworld";String s2 = "helloworld";String s3 = "bcd";System.out.println(s1.compareTo(s2)); // 0System.out.println(s1.compareTo(s3)); // 6System.out.println("-----------------");String s4 = "hello";String s5 = "hel";System.out.println(s4.compareTo(s5)); // 2}// 看compareTo()源码// 以s4,s5为例 public int compareTo(String anotherString) { int len1 = value.length;//this.value.length--->s4.toCharArray().length--->5 int len2 = anotherString.value.length;//s5.toCharArray().length---->3 int lim = Math.min(len1, len2);//int lim = Math.min(5,3) ;------>3 char v1[] = value;//s4字符串转换成字符数组:['h','e','l','l','0'] char v2[] = anotherString.value;//s5的字符数组:['h','e','l'] int k = 0;//此处定义了一个临时变量 while (k < lim) {//k<3,0,1,2 char c1 = v1[k];//['h','e','l'] char c2 = v2[k];//['h','e','l'] if (c1 != c2) { return c1 - c2; } k++; } return len1 - len2;//=====>char c1(s4) char c2(s5)=======>return s4.length-s5.length= 5-3 = 2 } }例如:
hello和hb:hb长度短,那长度都取2,判断:h一样,b和e不一样,就输出b和e的差
hello和he:he长度短,那长度都取2,判断:h一样,e一样,那就输出长度差
4)练习:
把arr[] = {1,2,3},按照[1,2,3]输出字符串类型
// 测试类public class Demo01 {public static void main(String[] args) {// 先定义一个字符数组int[] arr = { 1, 2, 3 };String s = printArr(arr);System.out.println(s);}// 方法输出public static String printArr(int[] arr) {// 定义一个空字符串String s = "";s += "[";for (int i = 0; i < arr.length; i++) {if (i == arr.length - 1) {s += arr[i];s += "]";} else {s += arr[i];s += ", ";}}return s;}}
B.StringBuffer
1)概述
线程安全的可变字符序列
线程安全---->同步---->效率低 比如:银行的网站、医院的网站
线程不安全---->不同步---->效率高 比如:论坛、博客、新闻
2)面试题
String和StringBuffer(线程安全),StringBulider(线程不安全)的区别?
共同点:都是字符串类型
不同点:
String:一旦被赋值,其值不能再改变,StringBuffer和StringBuilder是一个可变字符序列
StringBuffer:线程安全,同步,效率低,用在多线程中使用!
StringBulider:线程不安全,不同步,效率高;也是一个可变字符序列
一般用来替代StringBuffer,执行效率快!(单个线程中)
3)构造方法
public StringBuffer():构造一个不带字符串的字符缓冲区,初始容量为16个字符
// 测试类public class Demo01 {public static void main(String[] args) {StringBuffer sb = new StringBuffer();System.out.println(sb.length()); // 0System.out.println(sb.capacity()); // 16 空的字符串缓冲区:初始默认容量为16个字符}}public StringBuffer(int capacity):构造一个字符串缓冲区,指定容量
// 测试类public class Demo01 {public static void main(String[] args) {StringBuffer sb = new StringBuffer(50);System.out.println(sb.length()); // 0System.out.println(sb.capacity()); // 50}}public StringBuffer(String str):将str字符串创建到字符串缓冲区中:除适量16+str.length();
// 测试类public class Demo01 {public static void main(String[] args) {StringBuffer sb = new StringBuffer("hello");System.out.println(sb.length()); // 5System.out.println(sb.capacity()); // 21 16 + 5}}
注意:不能直接将一个字符串类型的值赋给StringBuffer
String s = "hello";
StringBuffer sb = s; //错误的
StringBuffer sb = "hello"; //错误的
4)添加功能
public StringBuffer append(String str):表示在字符串缓冲中追加,返回字符串缓冲区本身
// 测试类public class Demo01 {public static void main(String[] args) {StringBuffer sb = new StringBuffer();sb.append("hello");sb.append(true);sb.append('A');sb.append(12.34F);sb.append(100);System.out.println(sb); // hellotrueA12.34100// 链式编程sb.append("hello").append(true).append('A').append(12.34F).append(100);}}public StringBuffer insert(int offset, String str):在指定位置插入str字符串,返回字符串缓冲区本身
// 测试类public class Demo01 {public static void main(String[] args) {StringBuffer sb = new StringBuffer("helloworld");sb.insert(5, " hi ");System.out.println(sb);// hello hi world}}
5)删除功能
public StringBuffer deleteCharAt(int index):删除指定索引处的字符,返回StringBuffer
// 测试类public class Demo01 {public static void main(String[] args) {StringBuffer sb = new StringBuffer("helloworld");StringBuffer sb1 = sb.deleteCharAt(5);// 删除wSystem.out.println(sb1);// helloorld}}public StringBuffer delete(int statr, int end):删除从指定位置开始,到指定位置结束,返回StringBuffer
// 测试类public class Demo01 {public static void main(String[] args) {StringBuffer sb = new StringBuffer("helloworld");StringBuffer sb1 = sb.delete(0, 5);// 删除helloSystem.out.println(sb1);// world}}
6)替换功能
public StringBuffer relpace(int start, int end, String str);
从指定位置开始到指定位置结束,替换的内容为一个新的字符串
// 测试类public class Demo01 {public static void main(String[] args) {StringBuffer sb = new StringBuffer();sb.append("hello");sb.append("world");sb.append("java");System.out.println(sb);// helloworldjavasb.replace(5, 10, " hi ");System.out.println(sb);// hello hi java}}
7)反转功能
public StringBuffer reverse();
reverse():是StringBuffer特有功能,String没有
// 测试类public class Demo01 {public static void main(String[] args) {StringBuffer sb = new StringBuffer();sb.append(123456789);System.out.println(sb);// 123456789sb.reverse();System.out.println(sb);// 987654321}}
8)截取功能
截取功能和前面几个功能的不同,现在返回的是新的字符串类型,而不是字符串缓冲区本身!
public String substring(int statr);
// 测试类public class Demo01 {public static void main(String[] args) {StringBuffer sb = new StringBuffer();sb.append(123456789);String s = sb.substring(5);System.out.println(s);// 6789}}public String substring(int start, int end);
// 测试类public class Demo01 {public static void main(String[] args) {StringBuffer sb = new StringBuffer();sb.append(123456789);String s = sb.substring(4, 8);System.out.println(s);// 5678}}
9)面试题
StringBuffer和数组的区别
都是一个容器
数组:可以存储多个元素,这多个元素必须保证数据类型一致
StringBuffer:存储的始终都是一种数据类型,都是字符串
10)形式参数的问题
String类型作为形式参数和剧本数据类型是一样的
StringBuffer作为形式参数不一样
// 测试类public class Demo01 {public static void main(String[] args) {String s1 = "hello";String s2 = "world";change(s1, s2);System.out.println(s1);// helloSystem.out.println(s2);// worldStringBuffer sb1 = new StringBuffer("hello");StringBuffer sb2 = new StringBuffer("world");change(sb1, sb2);System.out.println(sb1);// helloSystem.out.println(sb2);// worldworld}public static void change(StringBuffer sb1, StringBuffer sb2) {sb1 = sb2;sb2.append(sb1); // 如果不传参,sb1 = world s2 = worldworld}public static void change(String s1, String s2) {s1 = s2;s2 = s1 + s2; // 如果不试用传参,s1 = world s2 = worldworld}}可以用反编译工具查看.class字节文件中的源码来分析
11)练习:判断一个字符串是否是一个对称字符串 aba 121
import java.util.Scanner;// 测试类public class Demo01 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入字符串:");String s = sc.nextLine();// 转换成字符缓存区,反转,再转换成String类型,最后再和s比较是否相等boolean b = new StringBuffer(s).reverse().toString().equals(s);System.out.println(b);}}
C.Integer
1)构造方法
public Integer(int value):构造一个新分配的Integer对象,它表示指定的 int 值
// 测试类public class Demo01 {public static void main(String[] args) {int i = 100;Integer i1 = new Integer(i);System.out.println(i1); // 100}}public Integer(String s):
throws NumberFormatException构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值
// 测试类public class Demo01 {public static void main(String[] args) {String s = "100";Integer i = new Integer(s);System.out.println(i);// 100}}
2)进制转换功能和查询功能
// 测试类public class Demo01 {public static void main(String[] args) {int i = 100;// 转换二进制System.out.println(Integer.toBinaryString(i));// 1100100// 转换八进制//System.out.println(Integer.toOctalString(i));// 144// 转换16进制System.out.println(Integer.toHexString(i));// 64// int取值范围System.out.println(Integer.MIN_VALUE);// -2146483648System.out.println(Integer.MAX_VALUE);// 2147483647}}
3)扩展
为了让对基本数据类型进行更多的操作以及运算,所以java针对这种情况:就提供了基本数据类型包装类类型:
byte---------------------->Byte
short-------------------->Short
int------------------------>Integer
long--------------------->Long
float--------------------->Float
double------------------>Double
boolean---------------->Boolean
char--------------------->Character
4)int ----> String相互转换
// 测试类public class Demo01 {public static void main(String[] args) {// int ----Stringint i = 100;//1)字符串拼接String s1 = "" + i;//2)int---Integet---StringInteger i2 = new Integer(i);String s2 = i2.toString();//3)public static String toString(int i)返回一个表示指定整数的 String 对象。String s3 = Integer.toString(i);//String ---- intString ss = "100";//1)String ---- Integerint i1 = new Integer(ss).intValue();//2)Integer类中的方法public static int parseInt(String s)int i3 = Integer.parseInt(ss);}}
- 【JavaSE学习笔记】常用类介绍02_String,StringBuffer,Integer
- 【JavaSE笔记】Java常用类及其方法(二)_String
- JavaSE----API之常用类(StringBuffer、Integer、Character)
- 【JavaSE学习笔记】常用类介绍_01_Object,Scanner,String
- javaSE--07--StringBuffer,Integer
- JavaSE学习----StringBuffer/StringBuilder类
- 黑马程序员_笔记十四_String和StringBuffer类
- Javase基础学习笔记之String StringBuffer
- JavaSE学习笔记之-----常用类
- 黑马程序员_String类-StringBuffer
- 【JavaSE学习笔记】常用类介绍03_Character,Arrays,BigDecimal,BigInteger,Calendar
- 【JavaSE学习笔记】常用类介绍04_System,Date,Math,Random,Pattern
- JavaSE阶段2_String,StringBuffer,System,Math,Arrays
- java_常用类_String
- 常用类:Object,String,StringBuffer,Charcter,Integer
- JavaSE入门学习29:Java常用类之StringBuffer类和StringBuilder类
- 黑马程序员_String类 StringBuffer类
- 黑马程序员_String类和StringBuffer类
- 南阳OJ之语言入门 题目39
- C# DataGridView控件
- Linux查看Cpu的核数,物理数,逻辑cpu数量
- shell脚本:小数运算(NS2:get_perform)
- 面向对象之继承与组合
- 【JavaSE学习笔记】常用类介绍02_String,StringBuffer,Integer
- hibernate中session接口方法总结
- CSDN Markdown操作
- 【12】PMP一模模糊知识点整理20170724
- volatile关键字详解
- mvc和三层的关系
- springboot数据库操作
- 中间件的意义
- C++ 获取Windows还原点列表