Java基础(Strrng类)
来源:互联网 发布:网络远程正规吗 编辑:程序博客网 时间:2024/06/05 05:24
一、String类
String类特点:String s1 = "abc"; String s2 = new String("abc");
1、在这里s1是一个类类型变量,所以“abc”是一个对象
2、String类一旦被初始化,就不可以被改变 s1 = "KK",当打印时虽然s1的值打印的并不是“abc”,但是只能说明是s1的指向变了
3、s1和s2的区别:s1在内存中只有一个对象,而s2在内存中却有两个对象
4、String类中的equals方法和Object类中equals方法的区别:String类中的equals覆盖了Object类中的equals方法,Object类中的方法比较的是对象是否相等,而String类中的方法比较的是内容是否相等
String常用方法分类:
用于获取:
1、获取字符串的长度:int length();
2、获取某个位置上的字符:char charAt();
3、根据字符串获取索引: int indexOf();
4、获取指定字符在字符串中第一次出现时的索引:int indexOf(String st); //没有时返回-1
int indexOf(String str, int index);
5、获取指定字符在字符串中最后一次出现的索引:int lastIndexOf(String st)
int lastIndexOf(String s, int index);
6、获取字符串的哈希码:int hashCode();
用于判断:
1、判断字符串中是否包含某一个字符:boolean contains(String st);
2、判断字符串是否以指定后缀名结束:boolean endsWith(String st)
3、判断字符串是否以指定前缀开始: boolean startsWith(String st);
4、判断两个字符串是否相等: boolean equals(String st);
5、判断两个字符串是否相等,不区分大小写:boolean
equalsIgnoreCase();
6、判断字符串是否有内容,其实就是在判断字符串长度是不是为0: boolean isEmpty();
用于转换
1、将字符串中的每个字符都转换为对应的ASCII码值,存放于byte类型数组中 byte[] getByte();
2、将字符型数组转换为字符串 :通过构造函数 String (char [] ch);
通过函数 : String copyValueOf(char [] ch);
String copyValueOf(char [] ch, int start, int end);
3、将字节数组(byte类型数组)转换为字符串:通过构造函数String(byte [] byres)
4、将字符串转换为字符数组:char [] toCharArray();
5、将基本数据类型转换为字符串 static String valueOf(int a);
static String valueOf(char ch);
static String valueOf(float f);
static String valueOf(double d);
用于替换:
用指定的字符串去替换字符串中与之匹配的字符串 String replace(String st);
用于获取子串
返回一个新字符串,他是该字符串的子字符串 String subString(int index);
String subSting(int start, int end)
其他:
用于清除左右两边的空格:String trim();
将字符串转换为大写:String toUpperCase();
将字符串转换为小写:String toLowerCase();
对两个字符串进行自然顺序的比较: int compareTo(String st);对两个字符串进行自然顺序的比较,不考虑大小写:int compareToIgnoreCase(String st);
将指定字符串添加到此字符串结尾:String comcat(String st);
小练习:
class StringTest1{public static void main(String[] args) {//下标和数组下标一样,都是从0开始String st = "abacfddefg";//获取长度sop(st.length());//获取某个位置上的字符:sop(st.charAt(2));//获取指定字符在字符串中第一次出现时的索引sop(st.indexOf("d"));//获取指定字符在字符串中第一次出现时的索引,从指定的索引搜索sop(st.indexOf("d",3));//获取指定字符在字符串中最后依次出现时的索引sop(st.lastIndexOf(f));//判断字符串是否以指定前缀开始: boolean startsWith(String st);sop(st.startsWith("Demo"));//判断字符串是否以指定后缀名结束:boolean endsWith(String st)sop(st.endsWith(".java"));//判断字符串中是否包含某一个字符:boolean contains(String st);sop(st.contains("Test"));}public static void sop(Object obj){System.out.println(obj);}//模拟字符串转字符数组方法public static char[] myToCharArray(String st){char [] ch = new char[st.length()];for(int i=0;i<st.length();i++){ch[i] = st.charAt(i);}return ch;}//indexOf(String st)原理public static int myIndexOf(String str,String st,int index){//str代表的是原字符串,st代表的是要索引的字符串char [] ch = myToCharArray(str);for(int i = index;i<ch.length;i++){if(ch[i]==st)return i;}return -1;}//indexOf(String st)原理public static int myIndexOf(String str,String st){return myIndexOf(str,st,0);}//模拟将字符型数组转换为字符串public static String myCopyValueOf(char[] ch){String st = "";for(int i=0;i<ch.length;i++){st+=ch[i];}return st;}//判断字符串是否有内容 isEmpty();public static int myIsEpty(String str){return str.length()==0;}//模拟清除左右连边空格 trimpublic static String myTrim(String str){int start = 0,end = str.length()-1;while(str.indexOf(" ",start)!=-1&&start<=end)start++;while(str.lastIndexOf(" ",end)!=-1&&start<=end)end--;return str.subString(start,end);}//将一个字符串进行反转"abcdefg";abfedcgpublic static String reverseString(String str){char [] ch = str.toCharArray();reverse(ch);return new String(ch);}public static void reverse(Object [] obj){for(int start=0,end=obj.length-1;start<end;start++,end--){swp(obj,start,end);}}public static void swp(Object [] obj,int start, int end){obj[start] = obj[start]^obj[end];obj[end] = obj[start]^obj[end];obj[start] = obj[start]^obj[end];}}
练习2/*获取两个字符串中最大相同子串。第一个动作:将短的那个串进行长度一次递减的子串打印。"abcwerthelloyuiodef""cvhellobnm"思路:1,将短的那个子串按照长度递减的方式获取到。2,将每获取到的子串去长串中判断是否包含,如果包含,已经找到!。*/class StringTest3{public static String getMaxSubString(String s1,String s2){String max = "",min = "";max = (s1.length()>s2.length())?s1: s2;min = (max==s1)?s2: s1;//sop("max="+max+"...min="+min);for(int x=0; x<min.length(); x++){for(int y=0,z=min.length()-x; z!=min.length()+1; y++,z++){String temp = min.substring(y,z);sop(temp);if(max.contains(temp))//if(s1.indexOf(temp)!=-1)return temp;}}return "";}public static void main(String[] args) {String s1 = "ab";String s2 = "cvhellobnm";sop(getMaxSubString(s2,s1));}public static void sop(String str){System.out.println(str);}}
二、StringBuffer
是一个容器,当使用同一个对象调用该对象的append方法、delete方法、insert方法时,返回的都是该类对象
常用方法:
StringBuffer append(); 用于在原有字符串的基础上追加字符串,可以追加任意类型
char charAt(char ch); 和String类中的charAt用法一样
StringBuffer delete(int strtt,int end) 可以用来删除指定位置的元素,也可以用来删除从某个位置到某个位置之间的字符串
int indexOf 和String类中的indexOf用法一样
StringBuffer insert(int index,任意类型) 用于将任意数据类型以字符串的形式插入到指定索引处
int lastIndexOf() 和String类中的lastIndexOff用法一样
StringBuffer replace(int start, int end, String str) 给指定位置的字符串替换为指定字符串
String reverse() 用于反转字符
void setCharAt(int index, char ch) 将给定索引处的字符设置为
ch
void setLength(int newLength); 设置字符序列的长度
String subString 和String类中的subString用法一样
StringBuffer特点:
1、长度是可以变化的
2、可以操作多种数据类型
3、最终会通过toString方法变成字符串
三、StringBulider
用法和StringBuffer用法一样,只有一点区别就是StringBuffer是同步的,而StringBuilder是不同步的,建议在使用时使用StringBuilder,因为它在没有使用到多线程时,效率要比StringBuffer要高
- Java基础(Strrng类)
- Java基础(String类)
- Java基础学习笔记(三)基础数据类型包装类
- android基础篇------------java基础(10)(File工具类)
- java基础--类与对象(类)
- java基础--API1(集合类)
- java基础(字符串分解类)
- Java(反射的基础Class类)
- Java基础(5)--类与方法
- java基础整理十七(常用工具类)
- java基础整理十八(高级类)
- java基础:高级类特性(四)
- java基础:常用类(五)
- 不可变类(java基础)
- java基础--类与对象(继承)
- java基础--类与对象(封装)
- java基础--类与对象(多态)
- Java基础(一)妙用枚举类
- objective-c--- 类、继承、多态、点语法、@class
- Docker安装学习
- 移动支付开发-项目总结
- error link2005 已经在msvcprt.lib里定义
- 阿里笔试之最长公共子串
- Java基础(Strrng类)
- jQuery实现左移右移动画效果
- WebView 良药 android
- http和socket之长连接和短连接区别
- UVA - 753 A Plug for UNIX
- UVA - 10118 Free Candies
- 源码分析之tinyhttpd(一)
- 为什么要内存对齐 Data alignment: Straighten up and fly right
- JQuery Easy Ui dataGrid 数据表格