当前位置: 首页> 科技> 名企 > 小程序制作开发_大连市政府建设工程招投标网_aso优化分析_长沙网络推广

小程序制作开发_大连市政府建设工程招投标网_aso优化分析_长沙网络推广

时间:2025/7/13 4:43:10来源:https://blog.csdn.net/2301_80174936/article/details/144890747 浏览次数:0次
小程序制作开发_大连市政府建设工程招投标网_aso优化分析_长沙网络推广

目录

1.字符串的构造

2.字符串对象的比较 

3.字符串的查找

4.字符串转化

1.数字《--》字符串

2.大小写转换 

3.字符串和数组之间 

 5.字符串的替换

6.字符串的拆分 

7.字符串的截取

8.字符串的不可变性

9.字符串的修改

 10.StringBuffer和StringBuider

11.String类oj

11.1第一个只出现一次的字符

11.2字符串最后一个单词的长度

11.3验证回文串 

1.字符串的构造

public class Main{public static void main(String[] args) {String str = "hello";//区别于C语言 java当中字符串 没有以\0结尾这样的说法!//一种精简的写法System.out.println(str);System.out.println(str.length());//length是方法int[] array2 = {1,2,3,4,5};System.out.println(array2.length);//length不是方法String str2 = new String("world");System.out.println(str2);char[] array = {'a','b','c'};//传字符数组变成字符串!!!!!String str3 = new String(array);System.out.println(str3);System.out.println("===================");//搞清两个空String str1 = "";System.out.println(str1.isEmpty());//判断字符串是不是空的String str4 = null;//str4这个引用不指向任何对象//System.out.println(str4.isEmpty());  空指针异常//在Java中""引起来的也是String类型对象System.out.println("hello".length());}
}

2.字符串对象的比较 

比较两个字符串

1.==

2.equals

3compareTo

4.compareToolgnoreCase

1.2. 

public class Main{public static void main(String[] args) {String str1 = new String("abcde");String str2 = new String("abcde");System.out.println(str1 == str2);//falseSystem.out.println(str1.equals(str2));//trueString str3 = "abcde";String str4 = "abcde";System.out.println(str3 == str4);//字符串常量池 有哈希表的基础}
}

==比较是否引用同一个对象

任何情况下  只要等号两边是引用类型 一定注意看此时比较的是什么?

如果要比较两个引用 所指向的对象的内容是否一致

一定重写equals方法-》为什么重写???因为不重写就会默认调用object的equals方法

我们建议自定义类型一定要重写hashcode和equals方法

3. 

public class Main{public static void main(String[] args) {String str1 = "hello";String str2 = "world";//str1大于str2那么返回正数  如果不大于 返回负数 如果相同 返回0System.out.println(str1.compareTo(str2));/** 比较逻辑:* 1.如果两个字符串的长度是一样的,那么第一个不一样的字符的大小就是整个字符串的大小* 2.如果两个字符串长度不一样,那么先比较两个长度的差值个(从前往后比)* e.g.比较abcd和abfcdh   先比较abcd和abfc* 3. 在这个差值范围内,有不一样的字符就能比较出来大小* 4.但是如果都是一样的,那么就看谁长谁大*/

4.

public class Main{public static void main(String[] args) {String str1 = "Abcd";String str2 = "abcd";//忽略大小写进行比较System.out.println(str1.compareToIgnoreCase(str2));}}

3.字符串的查找

public class Main {public static void main(String[] args) {String str1 = "abcdef";//获取指定位置的字符char ch = str1.charAt(2);System.out.println(ch);//KMP算法//返回ch第一次出现的位置int index = str1.indexOf('c');System.out.println(index);int index1 = str1.indexOf("de");int index2 = str1.indexOf('c',3);//默认从后往前找String str2 = "ababcdabcdef";int index3 = str2.lastIndexOf('a',5);System.out.println(index2);}
}

4.字符串转化

1.数字《--》字符串

class Student{}
public class Main {public static void main(String[] args) {//数值转字符串String s1 = String.valueOf(1234);String s2 = String.valueOf(12.34);String s3 = String.valueOf(true);String s4 = String.valueOf(new Student());//对象转字符串System.out.println(s1);System.out.println(s2);System.out.println(s3);//字符串转化成数字int data1 = Integer.parseInt("1234");double data2 = Double.parseDouble("12.34");System.out.println(data1);System.out.println(data2);}
}

2.大小写转换 

public class Main {public static void main(String[] args) {String str1 = "hello";String ret = str1.toUpperCase();System.out.println(ret);/*在Java当中String是不可变的* hello-》HELLO-》这个转换 不是在原来的字符串上面进行转换,他是生成了一个新的对象*/String str2 = "HEllo";String ret2 = str2.toLowerCase();System.out.println(ret2);}
}

3.字符串和数组之间 

public class Main {public static void main(String[] args) {//字符串转数组String str1 = "hello";char[] array = str1.toCharArray();for(int i = 0;i< array.length;i++){System.out.println(array[i]+" ");}System.out.println();//格式化String s = String.format("%d-%d-%d",1999,9,14);System.out.println(s);}
}

 5.字符串的替换

public class Main {public static void main(String[] args) {String str = "ababcabcabcde";//把所有的ab替换为oooo  这个替换也是一样 不是在原来字符串的基础上进行替换 他是产生了新的对象String ret = str.replace("ab","oooo");System.out.println(ret);System.out.println("=================");String ret2 = str.replace('b','z');System.out.println(ret2);//替换从前往后遇到的第一个String ret3 = str.replaceFirst("ab","kk");System.out.println(ret3);String ret4 = str.replaceAll("ab","kk");System.out.println(ret4);}
}

6.字符串的拆分 

public class Main {public static void main(String[] args) {String str = "name=zhangsan&age=10";//分割之后的结果 要存储到数组当中String[] strings = str.split("&");for(int i = 0;i < strings.length;i++){System.out.println(strings[i]);}String str2= "hello world hello bit";//分割之后的结果 要存储到数组当中String[] strings2 = str2.split(" ",2);//不是均匀分 第一个一组 后三个一组for(int i = 0;i < strings2.length;i++){System.out.println(strings[i]);}//!!!!!特殊情况  .号必须经过转义//| * +都得加上转义字符,前面加上\\String str3 = "192.168.0.0.1";String[] strings3= str.split("\\.");for(int i = 0;i < strings.length;i++){System.out.println(strings[i]);}//如果是“\” 那么就得写成“\\\\”String str4 = "192\\168\\0\\0\\1";String[] strings4 = str.split("\\\\");for(int i = 0;i < strings.length;i++){System.out.println(strings[i]);}//以多个分割线进行分割String str5 = "name=zhangsan&age=10";String[] strings5 = str.split("&|=");for(int i = 0;i < strings.length;i++){System.out.println(strings[i]);}//多次分割String str6= "name=zhangsan&age=10";String[] strings6 = str.split("&");for(int i = 0;i < strings.length;i++){String[] strings1 = strings[i].split("=");for(int j = 0;j<strings1.length;j++){System.out.println(strings1[j]);}}}
}

7.字符串的截取

public class Main {public static void main(String[] args) {String s = "abcdef";//这里如果传入的是0下标 那么默认返回原来的对象 但是如果传入的是其他对象,此时返回新的对象String ret = s.substring(1);//(1,4)==【1,4)System.out.println(ret);//bcdef//去除左右两边空格String s2 = "  abc  def  ";System.out.println(s2);String ret1 = s2.trim();System.out.println(ret1);}
}

8.字符串的不可变性

其一:String类被final修饰,不能被继承

其二:value被private final修饰

public class Main {public static void main(String[] args) {final int[] array = {1,2,3,4};array[0] = 10;//array = new int[3]; 错的 此时认为array的指向不能发生改变}
}


类比可知value的指向不能发生改变!!!但是内容可以修改value[0] = 'g';

但是为什么还是不可变呢?

因为private证明只能在当前类使用 !

9.字符串的修改

public class Main {public static void main(String[] args) {/*String s = "hello";s+="world";System.out.println(s);*///底层原理为:String s = "hello";StringBuilder stringBuilder = new StringBuilder();stringBuilder.append(s);stringBuilder.append("world");s = stringBuilder.toString();System.out.println(s);}
}

例题: 

1.

public class Example{String str = new String("good");char[ ] ch = { 'a' , 'b' , 'c' };public static void main(String args[]){Example ex = new Example();ex.change(ex.str,ex.ch);System.out.print(ex.str + " and ");System.out.print(ex.ch);}public void change(String str,char ch[ ]){str = "test ok";ch[0] = 'g';}
}

 运行结果图解:

 不是所有的传引用 都是改变原来的值。具体看代码是怎么做的 有可能只改变了指向

2. 

public class SystemUtil{public static boolean isAdmin(String userId){return userId.toLowerCase()=="admin";//不一样 会产生新的对象}public static void main(String[] args){System.out.println(isAdmin("Admin"));}
}

 10.StringBuffer和StringBuider

public class Main {public static void main(String[] args) {StringBuilder stringBuilder = new StringBuilder("abcd");//不能直接赋值 (string变Builder)stringBuilder.append(1);stringBuilder.append("po");stringBuilder.append("abcd").append(12.5);//比➕的效率高
//String是不可变的对象 StringBuilder和StringBuffer是可变的stringBuilder.setCharAt(0,'k');System.out.println(stringBuilder);stringBuilder.insert(1,"0000000000000000000");//插入System.out.println(stringBuilder);stringBuilder.reverse();//反转System.out.println(stringBuilder);String str = stringBuilder.toString();//将所有字符按照String的方式返回(Builder变string)System.out.println(str);}
}

11.String类oj

11.1第一个只出现一次的字符

import java.util.Arrays;
public class Main {public int firstUniqChar(String s) {//这里其实是用来哈西的思想int[] count = new int[26];for (int i = 0; i < s.length(); i++) {char ch = s.charAt(i);count[ch - 'a']++;}for (int i = 0; i < s.length(); i++) {char ch = s.charAt(i);if(count[ch-'a']==1){return i;}}return -1;}
}

11.2字符串最后一个单词的长度

import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);while(in.hasNextLine()){String s = in.nextLine();int k = s.lastIndexOf(' ');String ret = s.substring(k+1);System.out.println(ret.length());}}
}

11.3验证回文串
 

import java.util.Arrays;
import java.util.Scanner;public class Main {private boolean isLegal(char ch){if(ch >= 'a'&&ch <= 'z'|| ch >='0' && ch <='9'){return true;}return false;}public boolean isPalindrome(String s){s = s.toLowerCase();int left = 0;int right = s.length()-1;while(left < right){while(left<right &&!isLegal(s.charAt(left))){left++;}while(left<right &&!isLegal(s.charAt(right))){right--;}if(s.charAt(left)!=s.charAt(right)){return false;}else{left++;right--;}}return true;}
}

关键字:小程序制作开发_大连市政府建设工程招投标网_aso优化分析_长沙网络推广

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: