黑马程序员--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()。

总结:
这一讲对涉及的具体方法比较多,用法不难,也很好理解,但是能够熟练掌握并使用就要求能够多多练习了。

0 0
原创粉丝点击