package day01;
import java.util.Random;
import java.util.Scanner;
import org.junit.Test;
/**
*
*@author Administrator
*@version 1.0
*@since JDK 1.7
*/
public class Demo01 {
@Test
//字符串的基本概念和在进行字符串基本操作的时候所应该注意的问题;
public void test(){
/**
* (1)java中只要给定字符串的类型就是不能够进行改变的;
* (2)所有的引用类型是存储的是地址,是不可变的,是通过创建的对象来实现的;
* (3)String在创建的时候使用的final修饰的,不能够被继承;
* (4)java字符串采用的是Unicode编码方式的;
* (5)类似于Hello的字符串为字面量;
* (6)字符串缓冲池(起到去除重复的东西,先从字符串缓冲池中去寻找,如果有相同的则直接调用,只有使用字面量的时候一般才从常量池中进行查找),
* 减少内存的使用空间;
* (7)字符串是不利于去频繁的去修改的;
* (8)在进行字符串的练习的时候,如果都是字面量的时候,使用“==”进行判断的时候,是相同的;
* (是属于java编译器的原理,在编译的时候会进行计算)
* (9)使用new关键字的时候,是在内存中创建实际的对象;
*/
String str = "Hello world!";
System.out.println(str);
}
@Test
public void test2(){
//indexOf方法的使用;
String str = "Thinking in java";
//查找给定的字符串在当前字符串中的位置;
int index = str.indexOf("in");
System.out.println(index);
//根据所给的参数从指定的位置查找当前的字符串所出现的位置;
index = str.indexOf("in", 3);
System.out.println(index);
//使用lastIndexOf方法,查找整个字符串中最后一次出现的位置;
index = str.lastIndexOf("in");
System.out.println(index);
}
@Test
public void test3(){
//substring字符串截取操作;一般来说当我们使用数字来表示字符串的位置的时候,默认的是包头不包尾;
String str = "http://www.oracle.com";
/*//从指定的位置开始截取字符串,到指定的位置保留字符串;
System.out.println(str.substring(11, 17));*/
/**
* 获取域名操作
* (1)获取第一个.的位置,使用下标加1就可以;
* (2)获取第二个.的位置
*/
//首先说去第次出现的位置,将其设为截取字符串的操作的开始位置;
int start = str.indexOf(".");
//获取最后一次出现的位置,将其位置进行加1即可;
int end = str.indexOf(".", start+1);
String sub = str.substring(start+1,end);
System.out.println(sub);
}
@Test
public void test4(){
//去除字符串中所出现的的空白项,使用trim()方法进行字符串两边空白的去除;
String str = " Hello World ";
System.out.println(str);
System.out.println(str.trim());
}
@Test
public void test5(){
//使用charAt()来检索当前位置的字符;
/*String str = "Hello World";
char c = str.charAt(8);
System.out.println(c);*/
String str = "上海自来水来自海上";
//检查回文操作
//上海自来水来自海上
//思路:先是进行整个字符串的便利操作,根据回文的规则,如果一个字符串是回文的话则需要对原有的字符串进行择半从操作,
//根据便利的条件进行判断,如果前后对应的字符串相同,则表示为回文操作;反之
for(int i = 0;i<str.length()/2;i++){
if(str.charAt(i)!=str.charAt(str.length()-1-i)){
System.out.println("不是回文!");
break;
}
}
System.out.println("是回文!");
}
@Test
public void test6(){
/*//英文的大小写转换,主要用于验证码之间的转换,实现大小写的输入能够同时去满足
String str = "Hello World!";
//将字符串中的字符全部转换成大写字符;
System.out.println(str.toUpperCase());
//讲字符串中所有的字符转换成小写字符;
System.out.println(str.toLowerCase());
*/
/*String str1 = "WA3fd";
System.out.println("请输入验证码......"+str1);
//建创建Scanner对象
Scanner scan = new Scanner(System.in);
//获取当前控制台输入的字符串操作;
String input = scan.nextLine();
str1 = str1.toLowerCase();
input = input.toLowerCase();
if(str1.equals(input)){
System.out.println("验证成功!");
}else{
System.out.println("验证失败!");
}*/
//创建Random对象产生随机数量;
Random r = new Random();
//使用for循环进行验证码个数的判断;
for(int i=0;i<4;i++){
//这只一个状态标志,分别为大写、小写和数字三种状态;
int num = r.nextInt(3);
//定义当前需要输出的字符串;
String str = "";
switch(num){
case 0:
//表示小写状态
char c= (char) (r.nextInt(26)+'a');
str+=c;
break;
case 1:
//表示大写状态
char c1= (char) (r.nextInt(26)+'A');
str+=c1;
break;
case 2:
//产生数字
str += r.nextInt(10);
break;
}
System.out.print(str);
}
}
@Test
public void test7(){
String str = "Thinking in java";
//判断指定的字符串是否已指定的字符开始;
/**
* 该方法主要用来判断指定的字符串是否满足当前的输入要求,用户是否按照当前的指定输入进行基本的操作;
*/
boolean b = str.startsWith("Think");
if(b){
System.out.println("是");
}else{
System.out.println("否");
}
boolean b1 = str.endsWith("java");
if(b1){
System.out.println("是");
}else{
System.out.println("否");
}
}
@Test
public void test8(){
//valueOf()方法的使用,将参数中的之转换成字符串操作。但是我们一把使用加" "空字符串进行转换的;字符串是一个不变的对象;
int i = 100;
double d = 123.334;
String str= String.valueOf(i);
System.out.println(str+d);
}
@Test
public void test9(){
/**
* StringBuilder进行字符串的修改操作,用来解决字符串频繁的修改带来的内存的消耗
* 所以我们有频繁的修改字符串的时候,首选使用StringBuilder创建对象;当我们使用StringBuilder创建空的字符串的时候,我们默认创建的
* 是一个空的字符串;
* StringBuilder各个方法的使用;
* append(),在当前的字符串末尾添加相应的字符串;
* insert()方法,将所添加的字符串添加到指定的位置,后面的字符串向后移动;
* delete()
* replace()
* reserve()方法,字符串的反转操作;
* StringBuffer和StringBuilder的区别
* (1)StringBuffer是线程安全的,同步处理的新能稍慢,而StringBuilder是线程不安全的,能够进行并发处理,性能稍快;
*/
StringBuilder sb = new StringBuilder("sdcsdcsdc");
//sb.append("-sdc");
//在使用replace方法的时候,在设定范围的时候,前包括后不包括,是前半开区间;
//进行代码优化的时候,从下面往上面进行代码的等量优化;
sb.replace(2, 4, "@@");
System.out.println(sb);
}
}