常用API —— String字符串(java.lang.String)
本次学习要求:熟练掌握String的使用方式、String提供的操作字符串数据的常用方法及注意事 项。
String字符串使用方式(与String相关的都可以直接使用,不用导包):
① 用 “ _ ” 来直接赋值。 String name = "小明";
② public String() 创建一个空白字符串对象,不含任何内容。 String rs = new String();
③ publi String(String original) 创建一个字符串对象并赋值。 String rs = new String( "java" );
④ public String ( char[ ] chars) 根据字符数组的内容创建字符串。
char[ ] chars = { '原' , '神','牛','掰'};
String rs = new String(chars);
则字符串 rs 中的数据为:原神牛掰。
⑤ public String(byte[ ] bytes) 根据字节数组内容来创建字符串。
byte[ ] bytes = {97,98,99};
String rs = new String(bytes);
则rs的内容为:abc (AscⅡ码转换,97~99为a~c)
---------------------------------------------------------------------------------------------------------------------------------
··String提供的操作字符串数据的常用方法:

图1

图2
---------------------------------------------------------------------------------------------------------------------------------
·String的注意事项:

图3

图4
其中最需要注意的是:1️⃣String中以" "方式写出来的字符串对象会存储到堆内存的字符串常量池,且相同内容只存储一份;而通过new方式创建的字符串对象,每new一次都会产生一个新的对象置于堆内存中(不在字符串常量池),故即使两者字符串内容完全一致,但一个是" "创建的,另一个是用new创建的,则两者的地址不相同(示例请看图3)。2️⃣编译过程中,当要运算的内容所有值都是明确的(全是常量,没有变量),会触发Java编译优化机制,会自动拼接所有的内容,此时若常量池中已有相关数据则该变量会指向此数据的地址(示例请看图4中的eg3)。
---------------------------------------------------------------------------------------------------------------------------------
尝试项目1:完成用户登录
需求:系统正确的登录名和密码是:itheima/123456,请在控制台开发一个登录界面,接收用户输入的登录名和密码,判断用户是否登录成功,登录成功后展示:“欢迎进入系统!”,即可停止程序(注意:要求最多给用户三次登录机会)
代码:
package com.itheima.StringWay;
import java.util.Scanner;
public class StringTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
System.out.println("请输入你的用户名");
String name = sc.next();
System.out.println("请输入你的密码");
int password = sc.nextInt();
boolean equal = StringTestOperator(name,password);
if(equal){
break;
}
}
}
public static boolean StringTestOperator(String name, int password) {
String truename = "itheima";
int truepassword = 123456;
if(truename.equals(name) && truepassword == password){
System.out.println("欢迎进入系统!");
return true;
}else{
System.out.println("密码或用户名错误!请重试!");
return false;
}
}
}
相关问题:由于刚刚学习了OOP面向对象编程,脑子一时没转过来,使用了面向对象编程的样式 来写,导致代码过于臃肿。
··何时使用OOP:
1,需要管理数据并且这些数据有对应的操作时。
2,需要保证数据不能被随意修改,必须通过特定方法才能改变时。
3,当多个对象拥有相似的行为但具体实现不同时,使用OOP的继承和多态来实现。
4,需要隐藏内部实现的细节,只对外暴露简单的接口时。
5,项目需求复杂,需要长期维护和扩展时。
———————————————————————————————————————————
尝试项目2:用String开发验证码
需求:使用String来开发验证码,实现随机产生验证码,要求包含随机数数字或大小写字母。
代码:
package com.itheima.StringWay;
import java.util.Random;
import java.util.Scanner;
public class StringTeat2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//确定验证码个数
System.out.println("请输入所需的验证码个数:");
int num = sc.nextInt();
String code = code(num);
System.out.println("验证码为:" + code);
}
//方法用于调取随机验证码
public static String code(int num){
//定义一个空的字符串与包含验证码中全部可能出现的元素的字符串
String code ="";
String maincode ="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random r = new Random();
for (int i = 0; i < num; i++) {
//用随机调用获得随机数,再调用此数所在的字符
int index = r.nextInt(maincode.length());
code +=maincode.charAt(index);
}
return code;
}
}
相关问题:没有想到String maincode ="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";这个方法,导致代码又过于冗长。
当遇到从某个有限且较少的范围内取随机内容时,有两种写法:
1️⃣列出此范围内的所有内容交给数组,用for循环与Random随机数随机置换这个数组里面的元素,最后取首部的任意位元素作为随机取出的内容;
2️⃣将此范围内所有内容交给一个字符串,再定义一个空的字符串,Random 随机出字符串对应位置取此位置的字符赋予空字符串,以此循环,作为随机取出的内容。
更多推荐


所有评论(0)