字符串练习
案例调整字符串
采用字符拼接方式:
package Tests;
import java.util.Scanner;
public class tset09 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串A:");
String strA = sc.next();
System.out.println("请输入一个字符串B:");
String strB = sc.next();
//旋转并对比
boolean res = checkStr(strA,strB);
System.out.println(res);
}
public static boolean checkStr(String strA,String strB){
for (int i = 0; i < strA.length(); i++) {
strA = roateStr(strA);
if(strA.equals(strB))
return true;
}
return false;
}
public static String roateStr(String str){
String newStr = str.substring(1);
char c = str.charAt(0);
String returnString = newStr + c;
return returnString;
}
}
调整字符数组方式:
package Tests;
import java.util.Scanner;
public class tset09 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串A:");
String strA = sc.next();
System.out.println("请输入一个字符串B:");
String strB = sc.next();
//旋转并对比
boolean res = checkStr(strA,strB);
System.out.println(res);
}
public static boolean checkStr(String strA,String strB){
for (int i = 0; i < strA.length(); i++) {
strA = roateStr(strA);
if(strA.equals(strB))
return true;
}
return false;
}
public static String roateStr(String str){
// String newStr = str.substring(1);
// char c = str.charAt(0);
// String returnString = newStr + c;
// return returnString;
char[] arr = str.toCharArray();
char first = arr[0];
//将数组中的字符依次前移
for (int i = 1; i < arr.length; i++) {
arr[i-1] = arr[i];
}
//将第一个字符拼接到最后
arr[arr.length-1] = first;
//String res = arr.toString();
String res = "";
for (int i = 0; i < arr.length; i++) {
res = res + arr[i] ;
}
return res;
}
}
练习1 打乱字符串
package Tests;
import java.util.Random;
import java.util.Scanner;
public class test10 {
public static void main(String[] args) {
//输入一个字符串,打乱顺序并输出
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = sc.next();
//打乱顺序
String res = luanStr(str);
System.out.println(res);
}
public static String luanStr(String str){
//字符串转换为数组
char[] arr = str.toCharArray();
Random r = new Random();
//字符串数组中依次的值 与 随机生成的索引值对应的字符 进行交换
for (int i = 0; i < arr.length; i++) {
int index = r.nextInt(arr.length);
char temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
//交换后的arr为字符数组 所以要将其转换为字符串
String res = "";
for (int i = 0; i < arr.length; i++) {
res = res + arr[i];
}
return res;
}
}
练习2随机验证码(四个字母 一个数字)
package Tests;
import java.util.Random;
public class test11 {
public static void main(String[] args) {
//TODO:生成随机四个字母 一个数字
//1、定义一个数组存大小写字母
char[] arr = new char[52];
for (int i = 0; i < arr.length; i++) {
//存小写字母
if(i<=25){
arr[i]= (char)(97+i);
}else{
arr[i] = (char)(65+i-26);
}
}
//2、从数组里随机找四个字母
Random r = new Random();
String res = "";
for (int i = 0; i < 4; i++) {
int index = r.nextInt(52);
res = res + arr[index];
}
int num = r.nextInt(10);
//拼接一个数字,然后打乱顺序
res = luanStr(res + num);
System.out.println(res);
}
//3、打乱顺序
public static String luanStr(String str){
//字符串转换为数组
char[] arr = str.toCharArray();
Random r = new Random();
//字符串数组中依次的值 与 随机生成的索引值对应的字符 进行交换
for (int i = 0; i < arr.length; i++) {
int index = r.nextInt(arr.length);
char temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
//交换后的arr为字符数组 所以要将其转换为字符串
String res = "";
for (int i = 0; i < arr.length; i++) {
res = res + arr[i];
}
return res;
}
}
练习3将给定两个字符串数字,转化为数字并相乘(不用Integer.parseInt(str))
package Tests;
import java.util.Scanner;
public class test12 {
public static void main(String[] args) {
//字符串给定两个数字
// String num1 ="2" ;
// String num2 ="456" ;
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数字:");
String num1 = sc.next();
System.out.println("请输入第二个数字:");
String num2 = sc.next();
System.out.println("他们的乘积为:");
int num3 = toNum(num1);
int num4 = toNum(num2);
System.out.println(num3*num4);
}
public static int toNum(String str){
char[] arr = str.toCharArray();
int res=0;
char[] numArr = {'0','1','2','3','4'};
for (int i = 0; i < arr.length; i++) {
int num =0;
//将数字字符转化为对应的数字
switch (arr[i]){
case '0':
num = num + 0;
break;
case '1':
num = num + 1;
break;
case '2':
num = num + 2;
break;
case '3':
num = num + 3;
break;
case '4':
num = num + 4;
break;
case '5':
num = num + 5;
break;
case '6':
num = num + 6;
break;
case '7':
num = num + 7;
break;
case '8':
num = num + 8;
break;
case '9':
num = num + 9;
break;
default:
num = 0;
}
//将str转化为对应的数字 用循环控制乘以几个10
for(int j = 1;j<arr.length-i;j++){
num = num *10;
}
res = res +num;
}
return res;
}
}
ArrayList集合
集合长度可长可短,不能存基本数据类型,存引用数据类型。
ArrayList<String> array = new ArrayList<>();
面向对象
工具类:1、类名见名知意 2、私有化构造方法 3、方法定义为静态
static注意事项:
1、静态方法只能访问静态变量和静态方法。
2、非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和成员方法。
3、静态方法中是没有this关键字的。
继承
1、什么是继承?继承的好处?
继承是面向对象三大特征之一,可以让类与类之间产生父子关系。
可以把多个子类中重复的代码抽取到父类中,子类可以直接使用,减少代码冗余,提高代码复用性。
2、继承的格式
public class 子类 extends 父类 {}
3、继承后子类的特点
子类可以得到父类的属性和行为,子类可以使用。 子类可以在父类的基础上新增其他功能,子类更强大。
java只支持单继承,不支持多继承,但支持多层继承,java中所有的类都直接或者间接地继承于Object类。子类只能访问父类中非私有的成员。