package day02;
public class Demo {
public static void main(String[] args) {
/*
* String 类型
* 不可变的对象 ,被final修饰,对象一旦创建 就不可改变
* java 是采用Unicode字符集,一个字符占2个字节(Unicode是变长)
*
* 格式:
* 一:String str="123";
* 二:String str = new String ("水电费");
*
* 一:采用直接量方式,在内存中有一个String 常量池,若有该类型字符串,就直接重用,若没有创建新的字符串,(创建的字符串是公共的)
* 二:创建的对象是存在堆中(强制创建对象)
*
* 常量池:
* 创建时先在常量池中进行查找,查到对应的字符串,就不会创建,而是重用此字符串,没有查到就创建
* (jvm操作)
* 频繁修改字符串就不要使用String
*
* 字符串的重用可以减少内存的开销
*
*/
String str="123abc";
String str1="123abc";
String str2=1+"23abc";
/*
* 虚拟机机在赋值之前将等号右边的结果 计算完毕之后 ,在进行赋值
* (虚拟机在用结果和String常量池中匹配,有就重用,没有就创建)
*/
String str3 = "123"+"abc";
String str4 = '1'+23+"abc";
String str5 = new String("123zbc");
System.out.println(str==str1);//true
System.out.println(str==str2);//true
System.out.println(str==str3);//true
System.out.println(str==str4);//false
System.out.println(str==str5);//false
/*
* String 的长度
* 应用.length()
*
* 数组中的.length 和 String 中.length()区别
* 数组长得是属性,String中的是方法
*/
// 01234567
String s = "java ABC";
System.out.println(str.length());//6
System.out.println(s.length());//8
/*给定一个字符串中的下标,并返回当前下标所对应的下标
* charAt(int index); int
* index:一个下标
*/
char c = s.charAt(5);
System.out.println(c);//A
c = s.charAt(8);
System.out.println(c);
/*
* 字面量:直接给的值
* 直接赋值的字符串在常量池中,若有其他赋值存在该串
* 若没有创建
* 弊端:频繁修改浪费内存
*/
String t="a";
for(int i=0;i<10000000;i++) {
t+=t;
}
System.out.println("结束");
}
}
package day02;
public class Demo1 {
public static void main(String[] args) {
/* 检索:给定字符 并在字符串中进行检索匹配,并返回当前字符在字符串中的下标
* 没有检索到对应的字符返回-1
* indexOf(char c); int
*/
//
String str = "java 我恨你!java";
int i = str.indexOf('恨');
System.out.println(i);//6
i=str.indexOf('爱');
System.out.println(i);//-1
/* 检索当前中是否包含给定的字符串,并返回第一次出现的下标
* 没有检索到对应的字符返回-1
* indexOf(String str);int
*/
i = str.indexOf("我恨你");
System.out.println(i);//5
i = str.indexOf("gr");
System.out.println(i);//-1
/* 检索给定的字符 在给定下标匹配的位置
* 没有检索到对应的字符返回-1
* indexOf(char ch, int fromIndex);int
*/
i = str.indexOf("a",5 );
System.out.println(i);//10
/* 检索 从指定位置开始检索给定的字符串
* 没有检索到对应的字符返回-1
* indexOf(String str, int fromIndex);int
*/
i = str.indexOf("ja", 5);
System.out.println(i);//9
}
}
package day02;
public class Demo2 {
public static void main(String[] args) {
/* 012345678901234
* www.aidu.com.cn
* 检索 公司域名的字符串区间范围
* 思路:第一个点出现的下标,再检索第二个点出现的下标
*/
String str="www.aidu.com";
int start = str.indexOf('.');
System.out.println(start);//3
int end = str.indexOf('.', start+1);
System.out.println(end);
/* 截取子串 从给定下标位置开始截取子串
* 包含给定下标(含头)的字符
* substring(int start); String
*/
String s = str.substring(start+1);
System.out.println(s);
/* 截取子串 从给定的下标开始到结束
* 当前方法给定的参数,包含头不包含尾
* (在Java中给定的区间都是包含头不包含尾)
* substring(int start,int end); String
*/
s = str.substring(start+1, end);
System.out.println(s);
}
}
package day02;
public class Demo4 {
public static void main(String[] args) {
/* 去除字符串两边的空白
* (空格 换行 制表符)
* trim();String
*/
String str = " \tjava 我爱你! java!! ";
str = str.trim();
System.out.println(str);//java 我爱你! java!!
str ="java 我爱你! java!! ";
str=str.trim();
System.out.println(str);
}
}
package day02;
import java.util.Scanner;
public class Demo5 {
public static void main(String[] args) {
/* 大小写转换
* toUpperCase();String 转大写
* 将字符串内的英文转换成大写
* toLowerCase();String 转小写
* 将字符串内的英文转换成小写
*/
String str = "fewfFEFE缴费";
str = str.toUpperCase();
System.out.println(str);
str = str.toLowerCase();
System.out.println(str);
Scanner scn = new Scanner(System.in);
String str1 = scn.nextLine();
String str2 = scn.next().toLowerCase();
System.out.println(str1);
System.out.println(str2);
if(str.equals(str2)) {
System.out.println("通过");
}else {
System.out.println("没通过");
}
}
}
package day02;
import java.util.Random;
import java.util.Scanner;
public class Demo6 {
public static void main(String[] args) {
/*
* 生成验证码长度4 a~z A~Z 0-9组合
*/
while(true) {
String str="";
Random ran = new Random();
for(int i=0;i<4;i++) {
int j = ran.nextInt(3);
switch(j) {
case 0: str += (char) (ran.nextInt(26)+'a');break;
case 1: str+=(char) (ran.nextInt(26)+'A');break;
case 2: str+=ran.nextInt(10);break;
}
}
System.out.println(str);
System.out.println("请输入验证码(不区分大小写):");
Scanner scn = new Scanner(System.in);
String str1 = scn.next();
if(str1.toLowerCase().equals(str.toLowerCase())) {
System.out.println("success");
break;
}else {
System.out.println("false");
}
}
}
}
package day02;
public class Demo7 {
public static void main(String[] args) {
/* 查看当前的字符串是否以给定字符串的结尾
* 是返回true,不是返回false
* endsWith(String str); boolean
*/
String str = "京.A0001";
boolean b = str.endsWith("01");
System.out.println(b);
/* 查看当前字符串是否是给定的字符串开头
* 是返回true 否则返回false
* startsWith(String str);boolean
*/
b=str.startsWith("京");
System.out.println(b);
/*
* 将Java的基本数据类型转成String
* 静态方法String.valueOf(基本数据类型);String
* 此方法多重载
*/
int i=100;
String str1 = ""+i; //懒人操作
str1=String.valueOf(str1);
System.out.println(str1);
System.out.println(100);
/*
* 以给定字符进行截取,生成两个子串
* 返回String数字形式(不包含给定字符串)
* split(String str);String[]
*/
str="1+1";
String [] s = str.split("\\+");
System.out.println(s[1]);
/*
* 更换图片的名字
*/
String img="大狗.png";
String [] m = img.split("\\.");
long l = System.currentTimeMillis();//毫秒
System.out.println(""+l+"."+m[1]);
System.exit(0);
}
}
package day02;
import java.util.Scanner;
public class Demo8 {
public static void main(String[] args) {
/*
* 该对象(字符串)可以反复修改
* 追加, 插入, 替换的方法返回的结果是this
* toString()是返回String
* 该类实现了序列(后面讲)
*
* StringBuilder的线程是不安全的
*
* "世界真美好!"
* 1\我要带你去看看
* 2\在世界真美好后插入 : 啊
* 3\把世界替换为山西农业大学
* 4\删除啊 之前的字符串
*
* 从控制台接收字符串,将不和谐的子串替换
*/
StringBuilder s = new StringBuilder("世界真美好!");
System.out.println(s);
s.append("我要带你去看看!");
System.out.println(s);
s.insert(6, "啊");
System.out.println(s);
s.replace(0, 2, "山西农业大学");
System.out.println(s);
s.delete(0, 10);
System.out.println(s);
Scanner scn = new Scanner(System.in);
String s1 = scn.next();
// String n = "fjosfpojpkjfjowifmdjdseijfmd";
s1=s1.replaceAll("md", "**");
System.out.println(s1);
}
}
package day02;
import java.util.Scanner;
public class Practice {
public static void main(String[] args) {
Practice a = new Practice();
String str = a.random();
System.out.println("请输入正确的验证码"+str);
Scanner scn = new Scanner(System.in);
String str1 = scn.next().toLowerCase();
str=str.toLowerCase();
if(str.equals(str1)) {
System.out.println("输入正确");
}else {
System.out.println("错误");
}
}
char []str= {'0','1','2','3','4','5','6','7','8','9','q','w','e','r','t','y','u','i','o',
'p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n',
'm','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G',
'H','J','K','L','Z','X','C','V','B','N','M'};
public String random() {
String str1="";
for(int i = 0;i<4;i++) {
int s = (int) (Math.random()*62);
str1+=str[s];
}
return str1;
}
}
package day02;
public class Zuoye {
public static void main(String[] args) {
String str = "someapp/manager/emplist.action";
int start = 0;
String[]s=str.split("/");
System.out.println(s[2]);
String str1="able was i ere i saw elba";
String s1="";
String s2="";
boolean b=true;
for(int i=0;i<str1.length();i++) {
for(int j=str1.length()-1;j>=0;j--) {
s1 =String.valueOf(str1.charAt(i));
s2 =String.valueOf(str1.charAt(j));
if(s1.equals(s2)) {
b=true;
}else {
b=false;
}
if(i==j) {
break;
}
}
}
if(b) {
System.out.println("是回文字符串");
}else {
System.out.println("不是回文字符串");
b=false;
}
int i=1;
StringBuilder sb = new StringBuilder();
for(char c='\u4e00'; c<='\u9fa5';c++,i++){
sb.append(c);
if(i %50 ==0){
sb.append("\n");
}
}
System.out.print(sb.toString());
System.out.println(i);
}
}