Java常用类库(Object类、String类、StringBuffer类、包装类、Math类、System类)详解
常用类库
java.lang
java.lang包下放置了Java开发中常用的类和接口,所以为简化该包下类的使用,java.lang包下的类在使用时不需要导入这些类
java.lang包下常用类有:
- Object
- String
- StringBuffer和StringBuilder
- 八种基本数据类型的包装类
- Thread等等
一、Object类
java.lang.Object类是类层次结构中最顶层父类。所有的类(包括数组)直接或者间接的继承自Object类,同时也继承了该类中的方法
Object的构造方法:
- Object类只有一个无参的构造方法
- Object()
Object中常用的方法:
- boolean equals(Object o) 比较两个对象是否相同
- int hashCode() 返回一个对象的哈希码
- String toString() 将一个对象转换为字符串
1.getClass()
获取该对象的类的完整路径结构!
//getClass(): //获取该对象的类的完整结构
Student stu= new Student("张三",18);
Class clazz = stu.getClass();
System.out.println(clazz);Class clazz_1 = Student.class;
String name = clazz_1.getName();//获取完整路径
System.out.println(name);String simpleName = clazz_1.getSimpleName();
System.out.println(simpleName);//获取当前类名
运行结果:
class com.changyongleiku.Objece_1.Student
com.changyongleiku.Objece_1.Student
Student
2.hashcode()*
获取对象在内存中的地址!
@Override
public int hashCode() {return Objects.hash(name, age);
}
//hashcode() //获取对象在内存中的地址
int i = stu.hashCode();
System.out.println(i);
运行结果:
460141958
注意:
相同的对象应该具有相同的哈希码值,所以重写equals()的方法也要重写hashcode()方法。
3.toString()*
对象的字符串形式!
@Override
public String toString() {return super.toString();
}
重写toString()方法:
@Override
public String toString() {return this.name+" "+this.age;
}
//toString()对象的字符串形式
System.out.println(stu);
运行结果:
张三 18
4.equals()*
判断字符串是否相等:
equals(Object obj);判断传入的对象和当前对象是否相等
boolean equals(Object o):
- Object类的equals方法用于判断两个对象是否相等
- Object类的equals方法的返回值为boolean的true和false
- Object类的equals方法只有一种情况返回true:两个非空的引用变量o1和o2指向的是同一个对象时
//判断传入的对象和当前对象是否相等
public boolean xd(Object obj){if(obj == null){return false;}if(!(obj instanceof Student)){return false;}Student stu = (Student)obj;if(stu.getAge() == this.age && stu.getName() == this.name){return true;}return false;
}//自己写的
@Override
public boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;return age == student.age &&Objects.equals(name, student.name);
}//自带的
equals方法和==的区别:
- ==可以用于比较基本数据类型的值
- ==可以用于比较两个对象是否相等
- equals只能比较两个对象是否相等
== 比较地址(基本数据类型)
equals比较值(引用数据类型)
注意:
当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码.
5.Clone()
克隆: 要实现接口Cloneable
public class Student implements Cloneable{@Override
protected Object clone() throws CloneNotSupportedException {return super.clone();}}
克隆后判断相等。
Student stu_3 = (Student)stu.clone();
System.out.println(stu.equals(stu_3));
6.finalize()
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
7.创建一个类重写方法
package com.changyongleiku.Objece_1;import java.util.Objects;public class PErson {private String name;private int age;private String gender;private String email;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}/* @Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;PErson pErson = (PErson) o;if (age != pErson.age) return false;if (name != null ? !name.equals(pErson.name) : pErson.name != null) return false;if (gender != null ? !gender.equals(pErson.gender) : pErson.gender != null) return false;return email != null ? email.equals(pErson.email) : pErson.email == null;}@Overridepublic int hashCode() {int result = name != null ? name.hashCode() : 0;result = 31 * result + age;result = 31 * result + (gender != null ? gender.hashCode() : 0);result = 31 * result + (email != null ? email.hashCode() : 0);return result;}*///判断字符串是否相等@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;PErson pErson = (PErson) o;return age == pErson.age &&Objects.equals(name, pErson.name) &&Objects.equals(gender, pErson.gender) &&Objects.equals(email, pErson.email);}//哈希编码@Overridepublic int hashCode() {return Objects.hash(name, age, gender, email);}//显示属性@Overridepublic String toString() {return "PErson{" +"name='" + name + '\'' +", age=" + age +", gender='" + gender + '\'' +", email='" + email + '\'' +'}';}//构造方法public PErson() {}public PErson(String name, int age, String gender, String email) {this.name = name;this.age = age;this.gender = gender;this.email = email;}
}
二、String类
String类代表字符串,提供了开发中常用的字符串处理的方法,如:求字符串的长度、截取字符串、替换字符串等方法
字符串是常量,它的值创建之后就不可以再修改了。
String类常用构造方法
- String() 无参构造方法
- String(String str) 有一个字符串参数的构造方法
- String(char[]ch) 有一个char类型数组参数的构造方法
- String(byte[] b) 有一个byte数组参数的构造方法
声明和创建字符串对象的方式
String类常用方法:
- int length() 求字符串值的字符个数
- boolean equals(Object o) 比较两个字符串是否相同
- String replace(char old,char n) 字符串替换
- char charAt(int index) 返回指定字符串指定位置的字符
- int **compareTo(String s)**按字典顺序比较字符串大小
- boolean endsWith(String s) 比较字符串是否以指定的参数结尾
- boolean **startsWith(String s)**比较字符串是否以指定的参数开头
- String **valueOf(int i)**将基本数据类型转换为字符串
- boolean isEmpty() 判别一个字符串值的长度是不是为0
- int indexOf(int ch) 返回指定字符ch在字符串中的索引
- int **lastIndexOf(int ch)**返回指定字符ch在字符串中最后出现的索引
- String **substring(int begin)**从指定索引位置截取字符串
- split 根据给定分隔符拆分此字符串
- toCharArray 将此字符串转换为一个新的字符数组。
- toLowerCase 转小写
- toUpperCase 转大写
- trim 去掉前后空格/忽略前导空白和尾部空白
- concat 字符串拼接
String类中的构造方法和常用方法:
import java.io.UnsupportedEncodingException;
import java.util.Arrays;public class Main {public static void main(String[] args) throws UnsupportedEncodingException {//常用构造方法//String 类被final修饰,//字符串一旦声明好,长度不能改变。对他的运算就是产生新的字符串。String str = "hello";//基本数据类型String s = new String("hello");//引用数据类型System.out.println(s.equals(str));//trueSystem.out.println(s==str);//false//将ASCII转换成字符s = new String (new byte[]{97, 98, 99});System.out.println(s);//abcs = new String(new byte[]{97,98,99},"utf8");System.out.println(s);//abc//编码 解码s = "好";byte[] utf8s = s.getBytes("utf8");for (int i = 0; i < utf8s.length; i++) {System.out.println(utf8s[i]);}/* -27-91-67*/s = new String(utf8s,"utf8");System.out.println(s);//好//常用方法//charAt() 返回指定索引处 的Char值s = "sadqwdzxc";char c = s.charAt(3);System.out.println(c);//q//compareTo 按字典顺序比较两个字符串int qwe = s.compareTo("qwe");System.out.println(qwe);//2int aFc = s.compareToIgnoreCase("AFc");//忽略大小写,按字典顺序比较两个字符串System.out.println(aFc);//18//concat 字符串拼接s = "sadqwdzxc";String concat = s.concat(" word");System.out.println(concat);//sadqwdzxc word//contains 是否包含此字符s = "sadqwdzxc";boolean a = s.contains("a");System.out.println(a);//true//endsWith 判断是否以该字符结尾的s = "sadqwdzxc";boolean wewe = s.endsWith("wewe");System.out.println(wewe);//false//startsWith 判断是否以该字符开头的s = "sadqwdzxc";boolean wewe1 = s.startsWith("wewe");System.out.println(wewe);//false//indexOf 返回指定字符在此字符串中第一次出现处的索引s = "sadqwdzxc";int d = s.indexOf("d");System.out.println(d);//2//isEmpty 当且仅当 length() 为 0 时返回 trueboolean empty = s.isEmpty();System.out.println(empty);//false//replace 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。s = "sadqwdzxc";String replace = s.replace("d", "*");System.out.println(replace);//sa*qw*zxc//split 根据给定分隔符拆分此字符串s = "aaa,bbb,ccc,ddd";String[] split = s.split(",");System.out.println(Arrays.toString(split));//[aaa, bbb, ccc, ddd]//substring 从指定位置 截取返回一个新的字符串,它是此字符串的一个子字符串。s = "hello world";String substring = s.substring(6);System.out.println(substring);//world//substring 截取指定索引到指定索引的元素 [左闭右开)String substring1 = ss.substring(2,4);System.out.println(substring1);//ll//toCharArray 将此字符串转换为一个新的字符数组。char[] chars = s.toCharArray();System.out.println(chars);//hello world//toLowerCase 转小写String s1 = s.toLowerCase();//转小写System.out.println(s1);//hello world//toUpperCase 转大写String s2 = s.toUpperCase();System.out.println(s2);//HELLO WORLD//trim 去掉前后空格/忽略前导空白和尾部空白s= " sd sd dasd ";String trim = s.trim();System.out.println(trim);//sd sd dasd//转成字符串int i = 1;s = i + "";String s4 = String.valueOf(10);System.out.println(s);//1System.out.println(s4);//10// valueOf 返回 char 数组参数的特定子数组的字符串表示形式String s3 = String.valueOf(new char[]{'a', 's', 's', 'a', 's'}, 2, 3);System.out.println(s3);//sas}
}
String类、StringBuffer和StringBuilder之间的区别:
String字符串是常量,一旦创建无法修改
StringBuffer和StringBuilder是可变字符串,创建之后仍可以修改
StringBuffer是线程安全的、StringBuilder线程不安全
三、StringBuffer类和StringBuilder
StringBuffer和StringBuilder都是带有缓冲区的可变字符串
为什么要使用StringBuffer或者StringBuilder?
一个String对象的长度是固定的,不能改变它的内容,也不能附加新的字符至String对象中。可以使用加号“+”运算符来连接字符串以达到附加新字符或字符串的目的,但使用加号“+”运算符会产生一个新的String实例,即需要另外分配空间。如果既想节省开销,又能改变字符串的内容,则可以使用StringBuilder类。
StringBuffer类的构造方法
- StringBuffer()
- StringBuffer(String s)
StringBuffer的常用方法
- StringBuffer **append(int i)**在可变字符串末尾追加I
- StringBuffer **insert(int offset,String s)**在可变字符串指定位置插入另外一个字符串s
- int length() 返回可变字符串中字符的个数
- String toString() 将可变字符串转化为字符串对象
public class Main {public static void main(String[] args) {String a = "as";//构造方法//构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符StringBuffer s = new StringBuffer();//构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。String str = "hello word ";StringBuffer ss = new StringBuffer(str);System.out.println(ss);//常用方法//append 追加ss.append(" hello");System.out.println(ss);//hello word hello//delete 删除ss.delete(15,20);//开始下标,结束下标System.out.println(ss);//hello word//insert 插入ss.insert(5,"hello");//插入位置,插入字符System.out.println(ss);//hellohello word//replace 替换ss.replace(0,5,"*****");//开始下标,结束下标,替换字符System.out.println(ss);//*****hello word//reverse() 倒转ss.reverse();System.out.println(ss);// drow olleh*****//toString 转回字符串String s1 = ss.toString();System.out.println(s1);}
}
四、包装类
java.lang包下为8种基本数据类型提供对应的包装类
8中基本数据类型以及对应的包装类
包装类提供了字符串、基本数据类型和包装类相互转化的方法
数字基本数据类型的包装类都继承了Number类,它们的使用方式相似,下面以常用的基本数据类型int对应的包装类Integer为例说明数字类型包装类的使用。
基本数据类型 int值转化为Integer类型对象:
int i = 20;
Integer integer1 = new Integer(i);//方法一
Integer integer2 = Integer.valueOf(i);//方法二
Integer对象转化为基本数据类型int值:
Integer integer = new Integer(20);
int i1 = integer**.intValue**();
String类型的数字转化为Integer对象:
String s = “120”;
Integer integer1 = new Integer(s);//方法一
Integer integer2 = Integer.valueOf(s);//方法二
Integer类型转化为String类型:
Integer integer = new Integer(20);
String s1 = integer.toString();
String类型的数字转化为基本数据类型的int值:
- String s = “120”;
- int i1 = Integer.parseInt(s);//方 法一
- Integer integer = new Integer(s);
- int i2 = integer.intValue();//方法二
基本数据类型int转化为字符串:
- int i1 = 20;
- String str = String.valueOf(i1);//方法一
- str = Integer.toString(i2);//方法二
Integer的equals方法:
Integer的equals方法继承自Object,并且进行了重写
Integer的equals方法只有一种情况返回true:两个Integer类型的对象 i1 和 i2包含的值相等时;其他情况返回false
如:
Integer i1 = new Integer(20);
Integer i2 = new Integer(30);
Integer i3 = new Integer(20);
boolean b = i1.equals(i2);//false
b = i1.equals(i3);//true
根据基本数据类型int和对应包装类Integer的知识,总结如下内容
- byte/short/long/float/double类型和包装类之间转换的方法
- byte/short/long/float/double的包装类和字符串之间的转换方法
- byte/short/long/float/double类型和字符串之间的转换方法
boolean类型的包装类Boolean
- Boolean用于将一个基本数据类型boolean值包装为对象
将boolean值转换为Boolean对象
- Boolean b1 = new Boolean(true);//方法一
- Boolean b2 = Boolean.valueOf(true);//方法二
将Boolean对象转换为boolean值
- Boolean b = new Boolean(true);
- boolean b1 = b.booleanValue();//方法一
String类型对象转换为Boolean对象
- String s=“true”;
- Boolean b1 = new Boolean(s);//方法一
- Boolean b2 = Boolean.valueOf(s);//方法二
将Boolean对象转换为String类型
- Boolean b = new Boolean(true);
- String s1 = b.toString();//方法一
- String s2 = Boolean**.toString**(b);//方法二
- String s3 = String.valueOf(b);//方法三
boolean值转换为String对象
- boolean b = true;
- String s1 = String.valueOf(b);
String对象转换为boolean值
- String s = “true”;
- boolean b1 = Boolean.parseBoolean(s);//方法一
- Boolean b = new Boolean(s);
- boolean b2 = b.booleanValue();//方法二
字符包装类Character用于将char类型值包装为对象
将char值转换为Character对象
- Character c1= new Character(‘A’);//方法一
- Character c2 = Character.valueOf(‘A’);//方法二
将Character对象转换为char值
- Character c1= new Character(‘A’);
- char ch1 = c1.toString();//方法一
- char ch2 = Character.toString(c1);//方法二
Character包装类除了提供以上char和Character相互转换的方法外也提供了以下有用的方法
包装类是将基本数据类型的值包装为Java中的对象,Java语言为8种基本数据类型分别提供了包装类.
包装类提供了基本数据类型、包装类、字符串之间的相互转换的方法,这些转换的的方法在今后的开发中十分有用。
public class Main {public static void main(String[] args) {//包装类//把基本数据类型包装一下,//Integer 构造方法的使用//int--> IntegerInteger i = new Integer(90);Integer.valueOf(i);System.out.println(i);//90//Integer--> intint i1 = i.intValue();System.out.println(i1);//100//String-->Integeri = new Integer("100");//只能转 "数字"Integer.valueOf(i);System.out.println(i);//100//Integer--> StringString s = i.toString();System.out.println(s);//100//int-->StringString str = 10 +"";String s1 = String.valueOf(str);System.out.println(s1);//String --> inti = Integer.parseInt(str);System.out.println(i);//其他常用方法Integer x = new Integer(3);Integer y = new Integer(5);//compareTo 比较两个对象大小int i2 = x.compareTo(y);System.out.println(i2);//-1 //x<y//boolean 类型的包装类//boolean --> BooleanBoolean boo = new Boolean(true);System.out.println(boo);//String --> booleanboo = new Boolean("true");System.out.println(boo);//tureboo = new Boolean("sdadadad");System.out.println(boo);//false//Boolean --> booleanboolean b = boo.booleanValue();System.out.println(b);//String-->booleanboolean asdad = Boolean.parseBoolean("asdad");System.out.println(asdad);//false//Boolean -- > Stringboo.toString();System.out.println(boo);//false//Character 包装类//char --> CharacterCharacter charq = new Character('a');//Character-->charcharq.charValue();//Character-->Stringcharq.toString();//char-->StringString.valueOf('a');//String --> char"a".charAt(0);//Character的其他方法Character cc = new Character('a');// isDigit 确定指定字符是否为数字。boolean a = Character.isDigit('5');System.out.println(a);//true//isLetter 确定指定字符是否为字母。boolean a_1 = Character.isLetter('K');System.out.println(a_1);//true//isLetterOrDigit 确定指定字符(Unicode 代码点)是否为字母或数字。boolean a_2 = Character.isLetterOrDigit('K');System.out.println(a_2);//true// isLowerCase 确定指定字符是否为小写字母。boolean a_3 = Character.isLowerCase('K');System.out.println(a_3);//fasle// isUpperCase 确定指定字符是否为大写字母。boolean a_4 = Character.isUpperCase('K');System.out.println(a_4);//true// 确定指定字符是否为空白字符。isWhitespaceboolean spaceChar = Character.isSpaceChar(' ');System.out.println(spaceChar);//trueboolean whitespace = Character.isWhitespace('\n');///\\一般用这个System.out.println(whitespace);//true//转小写toLowerCase |、转大写:toUpperCaseCharacter.toLowerCase('H');}
}
自动拆装箱:
public class main {public static void main(String[] args) {//自动拆装箱//自动装箱Integer i = 10;Boolean o = true;Integer q = 10;Integer w = 10;System.out.println(q==w);//trueInteger q_1 = 200;Integer w_1 = 200;System.out.println(q_1==w_1);//false/* 范围 -128 ~ 127 一个字节内相等*///自动拆箱int j = new Integer(10);boolean ji = new Boolean(true);//自动装箱tt(5);}public static void tt(Object o){System.out.println(o);}
}
五、Math类
在java.lang.Math类中提供了在数学应用中常见的常量(如:PI值)以及方法(如:三角函数)
Math的构造方法是私有的,所有无法创建Math对象
Math中只有static修饰的常量和类方法
public class main {public static void main(String[] args) {//Math类 静态方法Math.max(10,14);//最大double pi = Math.PI; //静态常量 piMath.ceil();//向上取整Math.floor();//向下取整Math.round();//四舍五入Math.sqrt();//平方根Math.random();//获取一个随机数//Random类 随机数//Random r = new Random();//r.nextInt(101);//1-100之间的随机数//Sanner类 扫描器Scanner sc = new Scanner(System.in);int i = sc.nextInt();//输入一个整数String next = sc.next();//获取输入的字符串,以空格结束,空格后面的获取不到String s = sc.nextLine();//获取输入的一整行}
}
六、System
- System类代表运行时系统,提供了一些获取设置和获取当前系统运行环境的方法
- System有三个成员变量
- in 标准输入流
- out 标准输出流
- err 错误输出流
System中的方法
- System.arrayCope()//快速复制数组的方法
- System.exit(0);//退出Java虚拟机的方法
public class Main {public static void main(String[] args) {//System类System.out.println("hello word");PrintStream out = System.out;//输出流InputStream in = System.in;//输入流//从1970年到现在的秒数long l = System.currentTimeMillis();System.out.println(l);//1626939039073long l_1 = System.currentTimeMillis();System.out.println(l_1-l);//0System.exit(0);//退出虚拟机 后面的东西不会运行}
}
七、练习
练习一:
1.创建一个Student类,该有String类型的学号stuNo,String类型的姓名,要求将该类所有的成员变量进行封装,并且提供公共的getter和setter方法,重写equals方法,只要学生的学号相同即返回true,重写toString()方法,toString方法返回值类似”姓名:张三 学号:201301 ”
String 类 String str = “abcd”; 求字符串的字符个数
将str字符串截取为”cd”
import java.util.Objects;public class Student {private String stuNo;private String name;public String getStuNo() {return stuNo;}public void setStuNo(String stuNo) {this.stuNo = stuNo;}public String getName() {return name;}public void setName(String name) {this.name = name;}//只要学生的学号相同即返回true@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;return Objects.equals(stuNo, student.stuNo);}@Overridepublic int hashCode() {return Objects.hash(stuNo);}@Overridepublic String toString() {return "学号:'" + stuNo + '\'' +", 姓名='" + name + '\'' ;}//字符个数public int count(String str){return str.length();}//截取字符public String jie(String str){return str.substring(2);}public Student() {}public Student(String stuNo, String name) {this.stuNo = stuNo;this.name = name;}
}
public class main {public static void main(String[] args) {Student stu = new Student("1026", "张三");Student stu_1 = new Student("1026", "李四");boolean equals = stu.equals(stu_1);System.out.println("两个学生是否相等:"+equals);String str = "abcd";//打印学生信息System.out.println(stu.toString());System.out.println(stu_1.toString());//获取字符串个数int count = stu.count(str);System.out.println("字符串个数为:"+count);//截取字符串String jie = stu.jie(str);System.out.println("截取后的字符串为:"+jie);}}
练习二:
编写敏感词过滤程序
在网络程序中,如聊天室、聊天软件等,经常需要对一些用户所提交的聊天内容中的敏感性词语进行过滤。如“性”、“色情”、“爆炸”、“恐怖”、“枪”等,这些都不可以在网上进行传播,需要过滤掉或者用其他词语替换掉。
思路:将用户的聊天内容保存到一个字符串对象或一个StringBuilder对象中,然后与敏感词语进行比对。如果属于敏感词语,就过滤掉或替换掉。
正则解法:
public class Genghuan {public static String gh(String str){return str.replaceAll("(?:性|色情|爆炸|恐怖|枪)","*"); }
}
public class main {public static void main(String[] args) {String str = "你性福吗,色情这个东西,恐怖分子拿着枪,闯进了银行!";String gh = Genghuan.gh(str);System.out.println(gh);}
}
StringBuffer 解法:
package com.changyongleiku.hw.hw_2;public class mmIN {public static void main(String[] args) {String[] a = {"性","爆炸","在这里","怎样"};String aa = "asdad性sdjafj爆炸sdsad性是否奈法在这里啊,你要怎么样怎样啊";StringBuffer ss = new StringBuffer(aa);for (int i = 0; i < a.length; i++) {StringBuffer aaaa = new StringBuffer();for (int j = 0; j < a[i].length(); j++) {aaaa.append("*");}for(;;) {ss.replace(ss.indexOf(a[i]), ss.indexOf(a[i]) + a[i].length(), String.valueOf(aaaa));if(ss.indexOf(a[i])<0){break;}}}ss.toString();System.out.println(ss);}
}
练习三:
在注册时通常要验证用户名和密码是否合法,运用学习过的知识完成如下操作:
用户名长度大于等于6位,必须包含数字和英文字母
密码长度大于等于8位,必须包含特殊符合_或者$,英文字母以及数字
以上两个条件同时成立注册才能成功。
正则解法:
public class ZhuCe {private String usename;private String password;public void check(String username, String password) {if ((username.length() < 6 || password.length() < 8) && (username != "^(\\d+[A-Za-z]+[A-Za-z0-9]*)|([A-Za-z]+\\d+[A-Za-z0-9]*)$"|| password != "^[[0-9]+[a-zA-Z]+[$|_]+]+$")) {System.out.println("注册失败");} else {System.out.println("注册成功");}}public String getUsename() {return usename;}public void setUsename(String usename) {this.usename = usename;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}public ZhuCe() {}public ZhuCe(String usename, String password) {this.usename = usename;this.password = password;}
public class main {public static void main(String[] args) {ZhuCe z = new ZhuCe();Scanner scan = new Scanner(System.in);System.out.println("请输入要注册的账号:");String zhanghao = scan.next();System.out.println("请输入要注册的密码:");String mima = scan.next();z.setUsename(zhanghao);z.setPassword(mima);z.check(z.getUsename(), z.getPassword());}
}
Character解题:
package com.changyongleiku.hw.hw_3;public class User1 {//注册账号功能public boolean verifyUserName(String username){if(username.length()>=6&&containsDigit(username)&&containsLetter(username)&&!containsSpecialChar(username)&&!containsOtherSpecialChar(username)){return true;}return false;}//注册密码public boolean verifyPassword(String password){if(password.length()>=8&&containsDigit(password)&&containsLetter(password)&&containsSpecialChar(password)&&!containsOtherSpecialChar(password)){return true;}return false;}// 是否包含数字public boolean containsDigit(String str){char[] chars = str.toCharArray();for (int i = 0; i < chars.length; i++) {if(Character.isDigit(chars[i])){return true;}}return false;}// 是否包含字母public boolean containsLetter(String str){char[] chars = str.toCharArray();for (int i = 0; i < chars.length; i++) {if(Character.isLetter(chars[i])){return true;}}return false;}// 是否包含_或者$public boolean containsSpecialChar(String str){char[] chars = str.toCharArray();for (int i = 0; i < chars.length; i++) {if(chars[i]=='_'||chars[i]=='$'){return true;}}return false;}// 是否包含其他字符public boolean containsOtherSpecialChar(String str){char[] chars = str.toCharArray();for (int i = 0; i < chars.length; i++) {if(chars[i]!='_'&&chars[i]!='$'&&!Character.isDigit(chars[i])&&!Character.isLetter(chars[i])){return true;}}return false;}
}
package com.changyongleiku.hw.hw_3;public class mmmmAin {public static void main(String[] args) {User1 us = new User1();boolean a1 = us.verifyUserName("asdawweqf123");boolean a2 = us.verifyPassword("asdaszc12151_");if(a1 && a2){System.out.println("注册成功!");}else{System.out.println("注册失败!");}}
}
Java常用类库(Object类、String类、StringBuffer类、包装类、Math类、System类)详解相关推荐
- Java常用类库之String
Java常用类库之String学习与积累 概述 在学习Java时,我们知道Java的基本数据类型有整型的int,byte,short,long,字符型的char,布尔型的Boolean和浮点型的flo ...
- java 常用类库_JAVA(三)JAVA常用类库/JAVA IO
成鹏致远 |lcw.cnblog.com|2014-02-01 JAVA常用类库 1.StringBuffer StringBuffer是使用缓冲区的,本身也是操作字符串的,但是与String类不同, ...
- Java_08 快速入门 Java常用类库
目录 第一章:Java常用类库 1.1 StringBuffer类 范例1-1:观察StringBuffer基本使用. 范例1-2:取得CharSequence接口实例化对象. 范例1-3:Stri ...
- Java常用类库API
Java常用类库API 字符串操作 String类 String两种赋值方式 String类中的构造函数 String()方法 String(byte[] bytes)方法 String(byte[] ...
- Java常用类库以及简介,具体使用细节进行百度(爬虫爬取的数据)
来至于互联网 Office文档的Java处理包 POI [推荐] Apache POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.目前POI已经有了Ruby版本. 结构: ...
- C++ - 派生类(derived class) 的 构造(construct) 和 析构(destruct)顺序 详解
派生类(derived class) 的 构造(construct) 和 析构(destruct)顺序 详解 本文地址: http://blog.csdn.net/caroline_wendy/art ...
- python类继承中构造方法_第8.3节 Python类的__init__方法深入剖析:构造方法与继承详解...
第8.3节Python类的__init__方法深入剖析:构造方法与继承详解 一. 引言 上两节介绍了构造方法的语法及参数,说明了构造方法是Python的类创建实例后首先执行的方法,并说明如果类没 ...
- Java基础之匿名内部类,匿名内部类是什么?为什么要用匿名内部类,匿名内部类详解。
Java基础之匿名内部类,匿名内部类是什么?为什么要用匿名内部类,匿名内部类详解. 什么是匿名内部类? 顾名思义 匿名 就是没有名字,一个没有名字的内部类,称为匿名内部类. 下面先看一个例子,比如说你 ...
- 【java学习】常用实体类--String、StringBuffer\StringTokenizer
文章目录 参数传递 String String类有两个常用构造方法: 引用String常量 String类的常用方法 StringBuffer和StringBuilder StringBuilder中 ...
最新文章
- Error:java: Compilation failed: internal java compiler
- php对连接加密后传,PHP 加密解密和解决URL传输问题
- 堆排序 海量数据求前N大的值
- lambda表达式方法泛型_模板方法模式–使用Lambda表达式,默认方法
- St_geometry 初始用
- CAS 单点登录模块学习
- 使用Word2010直接编辑、发布博客→博客园cnblogs
- 微信公共账号学习笔记 _ 感想 爪机码字
- vim打开bin文件
- 分布式定时任务开源方案
- 功能性测试方法和流程
- PHP的面向对象编程思想
- my torch voyage
- Kafka 开启 ACLs 权限控制
- Python3学习笔记(二)by Learn Python 3 the HARD WAY
- 【上海交大oj】畅畅的牙签袋(状态压缩dp)
- java上传文件需要的依赖_java – 执行文件上载休息Web服务时缺少方法依赖性
- PHP Fatal error: Class 'Illuminate\Foundation\Console\Kernel' not found in D:\phpstudy\PHPTutorial
- 从http协议看百度360大战
- 正则表达式(手机号前带区号)
热门文章
- 利用CloudFormation自动化部署AWS GWLB集成FortiGate防火墙
- CLAN Studio Toolkits - AutoHotkey
- 总结与展望(1):2021与2022
- 非985大学生, 你和别人的差距在哪里? (中国青年报03-24)
- django中queryset的两大特性
- 600度近视眼恢复方法_近视600度还有救吗 怎么慢慢恢复
- 题目十二:脉冲按键电话按键显示电路设计(平台实现)
- 新手站长应该如何开始写文章?
- 北斗三号 PPP-B2b 服务性能评估--笔记总结
- [转]nginx和php-fpm调用方式