黑马程序员--String 和基本数据包装类
来源:互联网 发布:优化驱动器要不要开 编辑:程序博客网 时间:2024/04/29 21:21
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
注:视频来源,毕向东老师的 JAVA 基础视频。
一、String类
String 类适用于描述字符串。
常见的操作有哪些?
1、获取
1.1字符串中包含的字符数,也就是字符串的长度
int length():获取长度
1.2 根据位置获取某个字符串。
char charAt(int index)
1.3 根据字符获取该字符在字符串中的位置。
int indexOf(int ch):返回的是ch在字符串中第一次出现的位置
int indexOf(int ch,int fromIndex):从fromIndex指定位置开始,获取ch在字符串中出现的位置。
2、判断
2.1 获取字符串中是否包含某一个子串。
boolean contains(str):
特殊之处:indexOf(str):可以索引str 第一次出现的位置,如果返回-1表示 str 不在字符串中。所以,也可以用于对指定字符串的判断是否包含。
2.2 字符中是否有内容。
boolean isEmpty():原理就是判断长度是否为0;
2.3 字符串是否以指定内容开头。
boolean startWith(str):
2.4 字符串是否以指定内容结尾。
boolean endWith(str)
2.5 判断字符串内容是否相等。复写了 Object 类中的 equals 方法。
boolean equals(str)
2.6 判断内容是否相同,并忽略大小写。忽略大小写的比较。
boolean equalsIgnoreCase(str)
3、转换
3.1 将字符数组转成字符串。
构造函数:String(char[])
String(char[],offset,count)
3.2 将字符串转成字符数组。
char[] toCharArray()
3.3 将字节数组转成字符串。(了解)
3.4 将字符串转成字节数组。
byte[] getBytes()
4、替换
4.1 String replace(oldchar,newchar)
5、切割
5.1 split();
6、转换,去除空格,比较。
6.1 将字符串转换成大写或者小写
toUpperCase(); toLowerCase()
6.2 去除空格
trim()
6.3 对两个字符串进行自然顺序的比较。
int compareTo(String)
package fuxi;/** * *@author XiaLei */public class Day13Test { public static void main(String[] args) {// method_get(); method_is();// method_trans();// method_replace(); } public static void method_get(){ String str = "abCyaxk"; System.out.println(str.length());//获取长度 char ch = str.charAt(3);//根据角标获取字符 System.out.println(ch); System.out.println(str.indexOf(97));//返回第一次出现的位置 System.out.println(str.indexOf(97,1));//返回从角标1开始后出现的第一次位置 System.out.println(str.indexOf("C")); System.out.println(str.indexOf("a",2)); System.out.println(str.lastIndexOf("a"));//反向索引 } public static void method_is(){ String str = "xhabHKjlan"; System.out.println(str.startsWith("x"));//判断开始内容 System.out.println(str.endsWith("a"));//判断结尾内容 System.out.println(str.isEmpty());//判断是否为空 System.out.println(str.contains("ha"));//判断是否包含 System.out.println(str.equals("xhabhkjlan"));//判断是否相同 System.out.println(str.equalsIgnoreCase("xhabHkjlan"));//忽略大小写判断是否相同 } public static void method_trans(){ char[] ch = {'a','c','y','g','c','t'}; System.out.println(new String(ch));//构造函数,将字符数组转为字符串 System.out.println(new String(ch,1,3));//将一部分转为字符串 String str = "hhuwhsd"; System.out.println(str.toCharArray());//将字符串转为字符数组 } public static void method_replace(){ String str = "yshkjsdf"; System.out.println(str.replace("s", "b"));//替换 System.out.println(str.replace("a", "b"));//如果旧值不存在,返回原字符串。 }}
练习:
package fuxi;/** * *@author XiaLei */public class Day13Test1 { public static void main(String[] args) { String str = " java hello "; str = "asfhelloasfb"; String str1 = "fjkhelloa";// trims(str);// rever(str);// count(str,str1); maxSame(str,str1); } //自定义去字符串两边空格方法。 public static void trims(String str){ int index1=0,index2=0; //从前向后遍历。 for (int x = 0;x<str.length();x++){ if(str.charAt(x)!=' '){ index1 = x; break; } } //从后向前遍历。 for(int x= str.length()-1;x>0;x--){ if(str.charAt(x)!=' '){ index2 = x; break; } } System.out.println(str.substring(index1, index2+1)); } //自定义字符串反转方法。 public static void rever(String str){ char[] arr = str.toCharArray(); //自定义一个容器。 char[] ch = new char[arr.length]; int x = 0; int len = arr.length-1; while(x<arr.length){ //存储。 ch[len--]=arr[x++]; } System.out.println(new String(ch)); } //自定义求子字符串出现多少次的功能。 public static void count(String str,String str1){ int count = 0; int x = 0; int len = str1.length(); if(str.contains(str1)){ x = str.indexOf(str1); count++; while(str.indexOf(str1,x+len)!=-1){ x = str.indexOf(str1,x+len); count++; } } System.out.println(count); } //自定义一个求最大相同字符串的功能。 public static void maxSame(String str,String str1){ String str3 = ""; for(int x = str1.length();x>0;x--){ String str2 = str1.substring(0,x);// System.out.println("str2==="+str2); if(!(str.contains(str2))){ for(int y = 0;y<x;y++){ str3 = str2.substring(y,x);// System.out.println("str3="+str3); if(str.contains(str3)) break; } if(str.contains(str3)) break; } } System.out.println(str3); }}
二、StringBuffer和StringBuilding
1)StringBuffer:线程安全的可变字符序列 ,是字符串缓冲区,是一个容器。
1、长度是可变的。
2、可以操作多个数据类型。
3、最终通过toString()方法变成字符串。
2) CURD create update read delete
1、存储。
StringBuffer append();
StirngBuffer insert(index,数据):可以将数据插入到指定index位置。
2、删除。
StringBuffer delete(start,end):删除缓冲区的数据,包含start,不包含end。
deleteCharAt(index):删除指定位置的字符。
3、修改。
StringBuffer replace(start,end,str)
void setCharAt(index,char)
4、将缓冲区中的数据指定到。
3)StringBuilder:JDK 1.5之后出现。
4)StringBuffer 和 StringBuilder 的对比。
StirngBuffer: 线程同步的。线程安全。多线程使用
StringBuilder:线程不同步的。线程不安全。单线程使用
5) 升级 StringBuilder 因素:
1、提高效率。
2、简化书写。
3、提高安全性。
package fuxi;/** * *@author XiaLei */public class Day13Test2 { public static void main(String[] args) { StringBuffer sb = new StringBuffer("abcde"); sb.append("gfc");//添加元素// System.out.println(sb.insert(5, "xia"));指定位置插入// System.out.println(sb.delete(0, 2));删除指定位置字符串,不包含尾// System.out.println(sb.deleteCharAt(0));删除指定角标字符// System.out.println(sb.charAt(3));获取指定位置字符串// System.out.println(sb.indexOf("cde"));获取字符串所在角标// System.out.println(sb.lastIndexOf("gfc"));反向获取角标,不存在返回-1// System.out.println(sb.length());获取长度// System.out.println(sb.substring(4,7));获取指定范围字符串,不包含尾// System.out.println(sb.replace(2,5,"xia"));指定范围替换// sb.setCharAt(2, 'v');//返回类型为void。// System.out.println(sb.toString()); System.out.println(sb.reverse());//反转 }}
三、基本数据包装类
基本数据类型对象包装类。
byte Byte
short Short
int Integer
long Long
boolean Boolean
float Float
double Double
char Character
1)基本数据类型对象包装类的最常见作用。就是用于基本数据类型和字符串类型之间做转换。
1、基本数据类型转成字符串。
–>基本数据类型+”“;
–>基本数据类型.toString(基本数据类型值);
如:Integer.toString(34);//将整数34转成字符串”34”
2、字符串转成基本数据类型。
–>基本数据类型;
xxx a = Xxx.parseXxx(String);
int a = Integer.parseInt(str);
double b = Double.parseDouble(“12.33”);
boolean b = Boolean.parseBoolean(“true”);
Integer i = new Integer(“2123”);
int num = i.intValue();
2) 十进制转成其它进制
1、toBinaryString()
2、toHexString()
3、toOctalStirng();
3) 其它进制转十进制:parseInt()
练习:
package fuxi;/** * 题目:对一个字符串中的数值进行从小到大的排序。 * 思路:先要将字符串转换为int型数组,定义一个正则表达式进行切割,这里用冒泡排序(直接利用Arrays.sort()方法排序更简单),之后再转回为字符串。 *@author XiaLei */public class Day13Test4 { private static final String REG_SPACE = " +";//定义一个正则表达式 public static void main(String[] args) { String str = "32 53 25 65 -3 5"; //定义一个实现排序的方法。 String str1 = sortStingArray(str); System.out.println(str1); } public static String sortStingArray(String str) { //定义一个将字符串转为int型数组的方法。 int[] num_arr = stringToIntArray(str); //定义一个排序方法。 int[] num_arr1 = sortIntArray(num_arr); //定义一个将int型数组转为字符串的方法。 String str1 = intArrayToString(num_arr1); return str1; } public static String intArrayToString(int[] num_arr1) { //创建StringBuilder转换字符串。 StringBuilder sb = new StringBuilder(); for(int i = 0; i<num_arr1.length ;i++){ if(i!=num_arr1.length-1) sb.append(num_arr1[i]+" "); else sb.append(num_arr1[i]); } return sb.toString(); } public static int[] sortIntArray(int[] num_arr) { //冒泡排序。 for (int x = 0;x<num_arr.length;x++){ for (int y = 0;y<num_arr.length-x-1;y++){ if (num_arr[y]>num_arr[y+1]) swap(num_arr,y,y+1); } } return num_arr; } //换位方法。 private static void swap(int[] num_arr, int y, int i) { int temp = num_arr[y]; num_arr[y] = num_arr[y+1]; num_arr[y+1] = temp; } //切割方法。 public static int[] stringToIntArray(String str) { String[] arr = str.split(REG_SPACE); int[] num_arr = new int[arr.length]; for (int i = 0; i<arr.length;i++){ num_arr[i] = Integer.parseInt(arr[i]);//将字符串转为基本数据类型 } return num_arr; }}
打印结果:
JDK1.5版本以后出现的新特性。
Integer x=new Integer(4);
等效于:Integer x=4;//自动装箱。
还可以直接进行运算:x=x+2;//x进行自动拆箱。变成了int类型。和2进行加法运算。再将和进行装箱赋给x。x的拆箱动作等效:x.intValue()。
总结:
这一讲对涉及的具体方法比较多,用法不难,也很好理解,但是能够熟练掌握并使用就要求能够多多练习了。
- 黑马程序员--String 和基本数据包装类
- 黑马程序员_十 【String】【StringBuffer】【基本数据包装类】
- 黑马程序员——java基础学习--String类,StringBuffer和基本数据包装类
- 黑马程序员---String类和基本数据类型包装类
- 黑马程序员—基本数据类型包装类和String类
- 黑马程序员——String和基本数据类型包装类
- 黑马程序员--String系列和基本数据类型包装类
- 黑马程序员----String,StringBuffer和基本数据类型的包装类
- 黑马程序员——String类及基本数据包装类
- 黑马程序员 --- String类 StringBuffer 基本数据类型对象包装类
- 黑马程序员——String类、基本数据类型包装类
- 黑马程序员-day12-String类与基本数据类型包装类
- 黑马程序员--String、StringBuffer、基本数据类型包装类
- 黑马程序员 Java自学总结十二 String类和基本数据类型包装类
- 黑马程序员——Java基础---String类和基本数据类型包装类
- 黑马程序员 Java String类和StringBuffer以及基本数据类型对象包装类
- 黑马程序员------第9天笔记(String类和基本数据类型对象包装类)
- 黑马程序员——Java基础---String类和基本数据类型包装类
- 每天一个linux命令目录
- Spring IOC与DI入门讲解
- java中的序列化和反序列化学习笔记
- Lintcode(198) Permutation Index II
- [第1章]数据:CoreData的简单使用
- 黑马程序员--String 和基本数据包装类
- Zookeeper 学习笔记(一)
- Collapsing margins(外边距合并)
- 64位windows系统 int类型内存大小和课本中的差异
- 第17章:特殊类成员
- 多校第二场1006
- 大数据运营-服务型企业架构新思维
- 基于HT for Web矢量实现3D叶轮旋转
- 病毒侵袭