something about me
Hello!米娜桑!我是迴憶Li待續~,一名大一计算机新生。受到我好基友的影响,我也决定写写来帮助我的学习。我同时也是杰迷和吉吉粉,平时写代码离不开音乐,而我的名字呢便是来自于周董的一首歌,具体是哪一首jay迷们一定都知道了。
![](https://i-blog.csdnimg.cn/blog_migrate/b1d4b8c788a6c80dd0b1500b16cb222d.png)
我在学习了C语言和一点的python后,我决定开始学习java。因为很多网页制作等等方面离不开Java,Java 毋庸置疑仍是当前互联网行业里招聘需求量最大的。
初学肯定会有一些难度,但对于放寒假的我来说,有的是时间卷Java😳
但愿能从今天开始到开学那段时间好好把握,减少一些打王者的时间😁
接下来呢就是我今天所卷的内容——字符串
初始字符串
字符串在C语言就已经系统地认识了,Java中的字符串与C语言中的也没有很大的区别。字符串分为好几个类,有最常见的String类以及需要对字符串进行处理的比如StringBuffer,StringBuilder等
String型字符串
三种格式
格式1:
String 变量名;
变量名 = new String("字符串");
格式2:(就是格式1的合并)
String 变量名 = new String(“字符串”);
格式3:(最常用到的)
String 变量名 = "字符串";
由于字符串是引用型变量,存储方式与数组基本相同。
字符串相加
Java语言定义了“+”运算符可以实现两个字符串的连接操作,例如:
str = "czw" + "真的很卷!"; //str的值就是czw真的很卷!
注意:
String str1 = "czw";
str1 = str1 + "很卷";
String类创建的字符串变量,一旦被初始化或者赋值,它的值和所分配的内存内容不会改变,若强行改变则会产生新的字符串!
String类常用方法
格式:字符串变量名.方法名();
str.length() //字符串长度
str1.equals(str2) //比较
str.substring(index) //返回从index开始直到最后
str.substring(index1,index2) //从index1开始到index2-1
str.charAt(index) //返回指定位置字符
str.indexOf(a) //返回字符串a在str中第一次出现的位置
str.lastIndexOf(a)//最后一次
str.toLowerCase() // 转为小写
str.toUpperCase() // 转为大写
以上是我认为比较常见的,但是我认为完全没必要背,记不得了就去API看一眼就行😇
小小的练习一下下
题目是自己创建一个用户登录界面,输入用户名和密码,错误就重新输入,不超过三次。正确就登录成功!适当人性化一涅涅😜
import java.util.Scanner;
public class String_test {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
java.lang.String rightname = "cjp";
java.lang.String rightpassword = "cjpnb";
int i;
int flag = 0;
for(i = 1;i<=3;i++){
System.out.println("请输入用户名:");
java.lang.String name = sc.next();
System.out.println("请输入密码:");
java.lang.String password = sc.next();
if(name.equals(rightname)){
if(password.equals(rightpassword)){
System.out.println("输入正确!");
flag = 1;
break;
}else{
System.out.println("密码错误!");
System.out.println("您还剩下"+(3-i)+"次机会!");
}
}else{
System.out.println("用户名错误");
System.out.println("您还剩下"+(3-i)+"次机会!");
}
}
if(flag != 1){
System.out.println("账号冻结!");
}
}
}
以上呢就是我自己稍微写的一涅涅简单的代码,是可以运行的。
StringBuffer型字符串
创建结构:
StringBuffer 字符串名 = new StringBuffer(个数/"字符串内容")
感觉用到的地方暂时不是很大,稍微了解一下下
还有那个StringBuffer类常用方法API上都有,需要就去瞟一眼就行
正则表达式
这个我觉得有伊涅涅小难度,就是比较抽象。
具体这是干嘛的就是说,他是一个字符串处理工具,它可以判断给定的字符串是否可以符合一定的条件,或者我们可以获得一些特定的部分
语法结构:
这个还是有必要说一下下的
String regex = "正则表达式";
String input = sc.next();
Pattern pa = Pattern.compile(regex);
Matcher ma = pa.matcher(input);
if(ma.matches())
System.out.println("correct!");
else
System.out.println("error!");
使用之前还得注意是否需要导入类:
import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
具体的我觉得看几个例子就完全理解了,一下就是我整理的常用的:
常用正则表达式:
只能输入数字:"^[0-9]*$"
只能输入n位的数字:"^\\d{n}$"
只能输入至少n位的数字:"^\\d{n,}$"
只能输入m~n位的数字:。"^\\d{m,n}$"
只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"
只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"
只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"
只能输入非零的正整数:"^+?[1-9][0-9]*$"
只能输入非零的负整数:"^-[1-9][]0-9"*$"
只能输入长度为3的字符:"^.{3}$"
只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"
只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"
只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"
验证用户密码:"^[a-zA-Z]\\w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。
只能输入汉字:"^[\\u4e00-\\u9fa5]{0,}$"
验证Email地址:"^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"
验证InternetURL:"^http://([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?$"
验证电话号码:"1[358]\\d{9}$"
验证身份证号(15位或18位数字):"^\\d{15}|\\d{18}$"
验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"
验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"
具体举个例子
输入一个手机号,判断是否合理,运用正则表达式判断
import java.util.Random;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class java_learning_5th {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
Random r = new Random();
String regex = "1[358]\\d{9}$";
System.out.println("请输入手机号:");
String input = sc.next();
Pattern pa = Pattern.compile(regex);
Matcher ma = pa.matcher(input);
if(ma.matches())
System.out.println("correct!");
else
System.out.println("error!");
}
}
所以大概就是这么个意思,还挺好理解的😁
总结一下下
到目前为止,大多数还是C语言里的基本内容应用到Java里的内容,具体难点就是正则表达式的书写,但熟练了也就不难了
最后,it is my first time !希望能坚持下去,要求不高争取两天写一次!
![](https://i-blog.csdnimg.cn/blog_migrate/648aa35c99ae3def55afa6cb4339f8bb.jpeg)