
Object类: 是所有类的基类,或者说公共父类,每个类都直接或者间接的继承自Object,所以该类中有的方法,其他类中都有
构造方法:
public Object(); 所有类的构造方法中都会默认调用super() 会逐级调用直到调用到Object类为止.
成员方法:
public String toString(); 将对象转换为字符串时调用,可以打印指定内容,类似于Python中的__str__()
public boolean equals(Object obj); 对比两个对象的大小
注意:在开发中一般使用 == 比较是否为同一地址
会使用equals 比较两个对象是否为同一内容
例如: 在开发中 new Person(“小红”, 12); 与 new Person(“小兰”, 15); 不是同一对象
但是.在开发中 new Person(“小红”, 12); 与 new Person(“小红”, 12); 是同一对象
构造方法
//1.构造方法// String name = new String(); // 此处为空字符串
char[] arrChar = {'a', 'b', 'c'};
String str1 = new String(arrChar);
System.out.println(str1);
String name = "jack"; // 字符串定义的语法糖
System.out.println(name);
toString
equals
equalsIgnoreCase
charAt
toCharArray
public static void main(String[] args) {String str1 = "abc";char[] arrChar = {'a', 'b', 'c'};String str2 = new String(arrChar);System.out.println(str1);System.out.println(str2);// equals: 比较两个字符串是否相等System.out.println(str1 == str2); // false 两个内容相同的字符串对象,地址不一定相同System.out.println(str1.equals(str2)); // true equals 比较的是两个字符串中的内容是否相同,所以Strign中一定重写了equals// equalsIgnoreCase: 比较两个字符串是否相等,忽略大小写String str3 = "aBc";System.out.println(str1.equals(str3)); // falseSystem.out.println(str1.equalsIgnoreCase(str3)); // true 对比内容的时候忽略大小写// charAt: 可以获取指定位置的字符// 获取元素时,索引值从0开始,左至右依次递增.char char1 = str3.charAt(1);System.out.println(char1); // B// 能不能使用索引[]直接从字符串中取值???// System.out.println(str3[1]);// toCharArray: 将字符串拆解为字符数组char[] chars = str2.toCharArray();System.out.println("chars = " + Arrays.toString(chars));//探索: 在Python中常用的一些替换 拆分 等等功能在java存在么??String str4 = "hello world and java";// 字符串替换str4 = str4.replace("java", "bigdata");System.out.println(str4);// 根据分隔符拆分字符串String[] s1 = str4.split(" ");System.out.println(Arrays.toString(s1)); // [hello, world, and, bigdata]// toUpperCase将字符串准换为大写, toLowerCase 将字符串全部转换为小写String s2 = str4.toUpperCase();System.out.println(s2);//面试题: 获取字符串的长度怎么做?System.out.println(str4.length());// 获取数组的长度,怎么做??System.out.println(chars.length);// 结论: 获取字符串长度,使用的是length方法, 获取数组长度使用的是length属性}
public static void main(String[] args) {// 1. 定义两个变量,分别保存账号和密码信息String userName = "传智播客";String passWord = "123456";// 6. 循环三次,每次获取循环的次数// 由于我们是循环指定的次数,所以此时我们选择for循环for (int i = 1; i <= 3; i++) {// 2. 让用户键入账号密码信息Scanner sc = new Scanner(System.in);System.out.println("请输入您的账号:");String inputUserName = sc.nextLine();System.out.println("请输入您的密码:");String inputPassWord = sc.nextLine();// 3. 比对账号密码是否正确// == 判断的是地址相同,这里的需求时判断数值是否相同,所以应该选择equals进行相等判断
// if (userName == inputUserName && passWord == inputPassWord) {if (userName.equals(inputUserName) && passWord.equals(inputPassWord)) {// 4. 如果正确 提示 欢迎您System.out.println("您登录成功了!!!");// 如果输入账号密码正确,则跳出循环结束程序break;} else {// 5. 如果不正确 提示剩余次数(3-循环次数)System.out.println("输入错误,您还有" + (3 - i) + "次机会");if (3 - i == 0) {// 7. 如果剩余循环次数为0 , 则提示您的账号已经被锁定System.out.println("您已经三次输入错误,账号已经被锁定");}}}}
public static void main(String[] args) {// 键盘录入字符串Scanner sc = new Scanner(System.in);System.out.println("请输入随机的一个字符串:");String nextLine = sc.nextLine();// 可以更具ascii码的大小判断字符的类型
// char a = 98;
// System.out.println(a);//创建几个变量分别记录数字,大写字母,小写字母的数量int upperCharCount = 0;int lowerCharCount = 0;int numberCount = 0;// 遍历字符串(获取字符串中的每一个字符)for (int i = 0; i < nextLine.length(); i++) {char c1 = nextLine.charAt(i);// 根据数值的范围统计该类型字符出现的次数if (c1 >= 'a' && c1 <= 'z') {lowerCharCount++;} else if (c1 >= 'A' && c1 <= 'Z') {upperCharCount++;} else if (c1 >= '0' && c1 <= '9') {numberCount++;}}System.out.println("大写字母有:" + upperCharCount);System.out.println("小写字母有:" + lowerCharCount);System.out.println("数字字符有:" + numberCount);}
public static void main(String[] args) {// 1.获取用户键入的字符串信息Scanner sc = new Scanner(System.in);System.out.println("请输入随机的一个字符串:");String nextLine = sc.nextLine();// 快速抽取方法的快捷键:ctrl + alt + mreverse(nextLine);// 思考:在python中直接使用reverse可以进行字符串反转,在java中有没有类似的方法呢??}private static void reverse(String nextLine) {//2.创建一个新的字符串用于保存反转后的结果String newString = "";// 遍历字符串(获取字符串中的每一个字符)for (int i = 0; i < nextLine.length(); i++) {// 获取每一次遍历得到的字符信息char c1 = nextLine.charAt(i);newString = c1 + newString;}System.out.println(newString);
}
StringBuilder类
append
reverse
toString
/*介绍StringBuilder: 可变的字符序列, 叫做字符串缓存区类StringBuilder类,内部的字符数据是可以被修改的,和字符串之间可以相互转换构造方法:1.public StringBuilder();2.public StringBuilder(String s);成员方法1. append:在stringbuilder中追加字符2. reverse:反转字符3. toString: 将StringBuilder类数据转换为字符串数据*/public class Demo01 {public static void main(String[] args) {//StringBuilder对象的定义:StringBuilder sb1 = new StringBuilder();// 此时为空字符串System.out.println(sb1);StringBuilder sb2 = new StringBuilder("hello world!!!");StringBuilder sb3 = new StringBuilder("hello world!!!");// 执行打印方法时,自动调用了toString();// 此时证明StringBuilder类中重写了toString 方法,输出的是StringBuilder中保存的字符串信息System.out.println(sb2); // hello world!!!String string = sb2.toString();// append 给sb1添加字符信息// append 方法返回值就是当前的StringBuilder对象本身sb1.append(123);sb1.append("你好");// append 可以反复添加数据System.out.println(sb1);// 可以使用链式编程的方式进行调用sb1.append(123).append(456).append(678);System.out.println(sb1);// reverse 反转字符串// 在原有数据上进行了反转,产生新的数据// sb2.reverse();// System.out.println(sb2);// 拓展:// StringBuilder 中的equals没有重写, 还是去对比的两个对象的地址值是否相等System.out.println(sb2.equals(sb3)); // false}```
上一篇:时间复杂度和空间复杂度
下一篇:没人有时间