String的正常使用
public class Stringbase {
public static void main(String[] args) {
//两种创建字符串的方式
//第一种为直接赋值,存储在串池中,后续不可改变
//如果还有字符串需要赋值为Hello World,将直接把串池中的数据赋值给新的字符串
String st1 = "Hello World";
//第二种类似与数组,在堆中存储,每次new就会创建一个新的空间来存放
String st2 = new String("Hello World!");
System.out.println(st1);
System.out.println(st2);
//对字符进行拼接
//用于修改字符串的内容
char[] chs = {'a' ,'b' ,'c'};
String st3 = new String(chs);
System.out.println(st3);
//ASCII的表示,字节信息转化成字符串
byte[] bytes = {97,98,99};
String st4 = new String(bytes);
System.out.println(st4);
//字符串的截取(substring),已截取str1的Hello World为例
String st5 = st1.substring(0,5);//表示截取Hello,包头不包尾
String st6 = st2.substring(0);//表示从0开始截取,一直截完即Hello World
System.out.println(st5);
System.out.println(st6);
//字符串的替换(replace),以替换Hello World中的World为*****
String st7 = st1.replace("World" , "***");
System.out.println(st7);
String st8 = ("sbfnakfbak Hello World");
System.out.println(st8);
//可以定义一个数组作为需要替换的玩意
String[] arr ={"sb" , "md" , "tmd" , "World"};
for (int i = 0; i < arr.length; i++) {
st8 = st8.replace(arr[i] , "***");
}
System.out.println(st8);
}
}
以下两种为较为常见的java自带的方法
StringBuilder的使用
StringBuilder为String拼接的原理
public class StringBuilder1 {
public static void main(String[] args) {
//类名不可为StringBuilder
//该方法在java.long包中,long包是java的核心语法包,使用无需导包
//一般在字符串的拼接和反转时使用
//可以随时改变数值,相比传统定义方法,运行更快,占用内存更小,但没有之前的方法安全
//创建对象
StringBuilder sb = new StringBuilder("sfaf");
//添加字符串
sb.append("abc");
System.out.println(sb);
//反转字符串,引用方法就直接反转了
sb.reverse();
System.out.println(sb);
//获取长度
int len = sb.length();
System.out.println(len);
//将StringBuilder转化为String类型
String str = sb.toString();
//使用完该对象后,变成String类型
System.out.println(str);
}
}
StringJoiner的使用
import java.util.StringJoiner;
public class StringbaseJoiner {
public static void main(String[] args) {
//创建对象并规定格式,也可以不给后面符号,这样就只有间隔符
//jdk8开始使用,在拼接方面,比StringBuilder便捷
StringJoiner sj = new StringJoiner("," , "[" , "]");
//添加数据
sj.add("aaaa").add("bbbbb").add("c").add("d");
//打印结果
System.out.println(sj);
//打印长度
int len = sj.length();
System.out.println(len);
//打印字符串
//System.out.println(sj.toString());
String s = sj.toString();
System.out.println(s);
}
}
四道程序题
判断键盘输入的字符串中有多少个大写字母,小写字母,数字,其他符号
//导包
import java.util.Scanner;
public class Stringbasetext1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//给出提示并接收数据
System.out.println("请输入一个字符串");
String s = sc.nextLine();
printstring(s);
numberstring(s);
}
//对一个字符串进行遍历
public static void printstring(String s){
//s.length表示为字符串的长度,和数组同理;i为字符串索引的含义
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if(i == s.length()-1){
System.out.print(c);
System.out.println();
}else{
System.out.print(c + " ,");
}
}
}
//判断字符串中有多少个大写字母,小写字母,数字,其他符号
public static void numberstring(String s){
//定义计数器来计算各个字符数量
int numbercount = 0;
int bigcount = 0;
int smallcount = 0;
int othercount = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
//'9'表示ASCII表中9字符所在的位置(48)
if(c <= '9' && c >= '0'){
numbercount++;
}else if( c >= 'A' && c <= 'Z'){
bigcount++;
}else if( c >= 'a' && c <= 'z'){
smallcount++;
}else{
othercount++;
}
}
System.out.println("数字一共有" + numbercount);
System.out.println("大写字母一共有" + bigcount);
System.out.println("小写字母一共有" + smallcount);
System.out.println("其他字符一共有" + othercount);
}
}
String的字符串反转
//导包
import java.util.Scanner;
public class Stringbasetext2 {
public static void main(String[] args) {
//创建对象并接受键盘输入的对象
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
//引用方法
str = reversal(str);
//打印结果验证
System.out.println(str);
}
//将字符串反转的方法
public static String reversal(String str){
String result = "";
//将字符串中的每一位反着传输到字符c中
//每一次循环将c累加给循环外定义的变量result
for(int i = str.length()-1; i >= 0; i--){
char c = str.charAt(i);
result += c;
}
return result;
/*
char[] c = new char[str.length()];
int j = 0;
//将字符串中的每一位反着传输到字符数组c中
for(int i = str.length()-1; i >= 0; i--){
c[j] = str.charAt(i);
j++;
}
//将str的内容清空用来存储结果
str = "";
for(int i = 0; i < c.length; i++){
//将字符数组c的每一个数累加到结果字符串res中
str += c[i];
}
return str;
*/
}
}
键盘输入一个数,要求将其转化为大写汉字(零,壹,贰,叁,肆,伍,陆,柒,捌,玖)且最大不超过7位数并填补单位,空余的位数用零填补
//导入键盘录入包
import java.util.Scanner;
public class Stringbasetext3 {
public static void main(String[] args) {
//创建对象,并给出提示
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个不超过7位数的正整数");
int s = 0;
//如果数据不合法,将一直循环
while (true) {
//接收数据并判断数据合法性
s = sc.nextInt();
if (s >= 0 && s <= 9999999 ) {
break;
}
System.out.println("数据不合法,请重新输入");
}
//将对应的数字转化成对应的汉字大写,并补零到7位
//计算输入的数一共有多少位
int len = numbercount(s);
System.out.println(len);
//定义一个StringBuilder数据类型来记录结果,便于节省空间
StringBuilder sb = new StringBuilder();
//通过changebig方法将int转变为汉字大写
while (s != 0) {
sb.append(changebig(s % 10));
s = s / 10;
}
//对不满7的数进行补零
for (int i = 0; i < 7 - len; i++) {
sb.append("零");
}
//将sb反转才是需要的数
sb.reverse();
//将StringBuilder型转变为String方便后面程序的进行
String str = sb.toString();
//定义单位数组来对应这七位数
String[] arr ={"佰", "拾" , "万" , "仟" , "佰", "拾", "元"};
for (int i = 0; i < arr.length; i++) {
//快速把字符串变为字符数组:char[] arr = str.toCharArray();
//str.charAt(i)表示为在str字符串中的第i个索引拿出来作为一个字符
System.out.print(str.charAt(i));
System.out.print(arr[i]);
}
System.out.println();
}
//计算一个整数一共有多少位
public static int numbercount(int number) {
int length = 0;
while (number != 0) {
number /= 10;
length++;
}
return length;
}
//将对应的数字转化成对应的汉字大写
public static String changebig(int ge){
//根据ASCII表,将字符转化成整数,用来当做arr数组中的索引
String[] arr = {"零" , "壹" , "贰" , "叁" , "肆" , "伍"
, "陆" , "柒", "捌", "玖"};
return arr[ge];
}
}
生成四位数的验证码,范围为A-Z,a-z,0-9;其中至少一个数字且位置随机
//导包
import java.util.Random;
public class Stringbasetext4 {
public static void main(String[] args) {
//创建对象
Random rand = new Random();
//创建随机的大小写字母的数字的范围字符串
StringBuilder sb = new StringBuilder();
//将大小写字母,放入sb中
for (int i = 0; i < 26; i++) {
char c1 = 'A';
char c2 = 'a';
sb.append((char) (c1 + i));
sb.append((char) (c2 + i));
}//AaBb.....
//在字符串的末尾加入0-9
for (int i = 0; i < 10; i++) {
char c1 = '0';
sb.append((char) (c1 + i));
}
System.out.println(sb);
//创建一个reuslt来存放验证码
StringBuilder result = new StringBuilder();
//生成随机的验证码
for (int i = 0; i < 4; i++) {
int num = rand.nextInt(sb.length());
result.append(sb.charAt(num));
}
System.out.println(result);
//随机出一个数字,随机替换result中的一个数据
int temp = rand.nextInt(10) + 52;
//用c记录sb中随机出的数字
char c = sb.charAt(temp);
System.out.println(c);
//用随机数来决定替换哪一个
int r = rand.nextInt(4);
System.out.println(r);
//截取在result中r索引前面和后面的字符
//要截取需要先将result转化为字符串
StringBuilder resultend = new StringBuilder();
if (r == 0) {
resultend.append(c);
resultend.append(result.toString().substring(1));
}else if (r == 3) {
resultend.append(result.toString().substring(0,3));
resultend.append(c);
}else{
resultend.append(result.toString().substring(0,r));
resultend.append(c);
resultend.append(result.toString().substring(r + 1));
}
//将最终结果打印
String str = resultend.toString();
System.out.println(str);
}
}