目录
字符串处理:StringBulider 和 StrngBuffer
顶层父类Object
简介:
类层次结构最顶层的基类,所有类都直接或间接地继承自Object类,所以所有的类都是一个Object(对象)
构造方法:
Object():构造一个对象,所有子类对象初始化时都会优先调用该方法
成员方法:
- int hashCode();返回该对象的哈希值,该方法通过对象的地址值进行计算,不同对象的返回值一般不同
- Class<?> getClass();返回调用此方法对象的运行时类对象(调用者的字节码文件对象)
- String toString();返回该对象的字符串表示,若不重写,输出的是对象的地址,地址由全类名(模块+包+类) + @ + 计算的哈希值的无符号十六进制
- 重写,一般输出全属性值的拼接
- boolean equals();返回其他某个对象是否与此对象“相等”,默认情况下比较两个对象的引用(地址值),建议重写
public static void main(String[] args) {
// 1.创建Object类型对象
Object obj1 = new Object();
Object obj2 = new Object();
//返回地址计算得到得hash值 不同对象的哈希值一般不同
int code1 = obj1.hashCode();
int code2 = obj2.hashCode();
System.out.println(code1);
System.out.println(code2);
System.out.println("-------------------");
//比对的是对象的引用(地址)
System.out.println(obj1.equals(obj2));
System.out.println("-------------------");
String str1 = obj1.toString();
String str2 = obj2.toString();
//toString 输出的是对象的地址 地址由全类名(模块+包+类) + @ +计算的哈希值的无符号十六进制
System.out.println(str1);
System.out.println(str2);
System.out.println("-------------------");
Class clazz1 = obj1.getClass();
Class clazz2 = obj2.getClass();
//返回字节码文件
System.out.println(clazz1);
System.out.println(clazz2);
}
打印结果
- 注意: toString@后面结果=哈希值的无符号十六进制
- toString() 和 equals()方法的重写
public static void main(String[] args) {
Student stu1 = new Student(1, "张三", 22);
Student stu2 = new Student(2,"李四", 23);
Student stu3 = stu1;
/*String str1 = stu1.toString();
String str2 = stu2.toString();
System.out.println(str1);
System.out.println(str2);*/
//输出语句直接打印对象 默认调用该对象的toString方法
System.out.println(stu1); // == stu1.toString()
System.out.println(stu2);
boolean isequal_1 = stu1.equals(stu2);
boolean isequal_2 = stu1.equals(stu3);
System.out.println(isequal_1);
System.out.println(isequal_2);
}
控制台录入Scanner
简介:
扫描器。能够解析字符串和基本数据类型的数据
构造方法:
Scanner(InputStream):构造一个扫描器对象,从指定输入流中获取数据;参数System.in,对应键盘录入
成员方法:
- haxNextXxx():判断是否有下一个输入项,其中Xxx可能是任意基本类型数据,返回结果是布尔类型
- nextXxx():获取下一个输入项,返回对应Xxx类型的数据
- String nextLine():获取下一行数据。以换行符作为分隔符
- String next():获取下一个输入项,以空白字符作为分隔符;空白字符:空格 tab 回车
public static void main(String[] args) {
// 创建Scanner类型对象
Scanner sc = new Scanner(System.in);
//提示用户输入
System.out.println("请输入一个整数: ");
// 避免输入数据类型非法导致异常
if(sc.hasNextInt()) {
int num = sc.nextInt();
System.out.println("num: " + num);
} else {
System.out.println("您输入的是非法数据!");
}
}
---------------------------------------------------------
public static void main(String[] args) {
// 创建Scanner类型对象
Scanner sc = new Scanner(System.in);
//提示用户输入
System.out.println("请输入一串字符串: ");
String str = sc.nextLine();
System.out.println("----------------");
System.out.println(str);
}
---------------------------------------------------------
public static void main(String[] args) {
// 创建Scanner类型对象
Scanner sc = new Scanner(System.in);
//提示用户输入
System.out.println("请输入若干字符串,以空格分开");
String str2 = sc.next();
System.out.println(str2);
}
字符串处理String
简介:
字符串。每一个字符串对象都是常量
构造方法:
String(byte[]) 构造一个String对象,将指定字节数组中的数据转化成字符串
String(char[]) 构造一个String对象,将指定字符数组中的数据转换成字符串
成员方法:
- boolean equals(String):判断当前字符串与给定字符串是否相同,区分大小写
- boolean equalsIgnore(String):不区分大小写
- boolean startWith(String):判断是否以给定字符串开头
public static void main(String[] args) {
//测试构造方法
// 1.将指定的字节数组转成字符串
byte[] bys = {97, 98, 99};
String s1 = new String(bys);
System.out.println("s1: " + s1);
// 2.将指定的字符数组转成字符串
char[] chs = {'h', 'e', 'l', 'l', 'o'};
String s2 = new String(chs);
System.out.println("s2: " + s2);
// 实际开发中, String类进行了优化 可直接赋值
String s3 = "abc";
System.out.println("s3: " + s3);
// 测试成员方法
String str1 = "abc";
String str2 = "ABC";
//.equals()
boolean b1 = str1.equals(str2);
System.out.println("equals(): " + b1);
//.equalsIgnoreCase()
boolean b2 = str1.equalsIgnoreCase(str2);
System.out.println("equalsIgnoreCase(): " + b2);
//.startWith()
boolean b3 = str1.startsWith("ab");
System.out.println(b3);
}
- int length():获取当前字符串长度
- char charAt(int index): 获取指定索引位置的字符
- int indexOf(String):获取指定字符(串)第一次出现的索引
- int lastIndexOf(String): 获取指定字符(串)最后一次出现的索引
- String substring(int): 获取指定索引位置(含)之后的字符串
- String substring(int,int):获取从索引start位置(含)至索引 end位置(不含)的字符串
public static void main(String[] args) {
String str = "白玫瑰得得得之所愿得之所愿白玫瑰";
// 成员方法.length()
System.out.println(str.length());
// 获取字符‘得’第一次出现的索引
int index1 = str.indexOf('得');
System.out.println("index1: " + index1);
// 获取字符'得'最后一次出现的索引
int index2 = str.lastIndexOf('得');
System.out.println("index2: " + index2);
// 截取从索引5开始的所有元素
String s1 = str.substring(5);
System.out.println("s1: " + s1);
// 截取5-9之间
String s2 = str.substring(5,9);
System.out.println("s2: " + s2);
}
- byte[] getBytes(): 将字符串转为字节数组
- char[] toCharArray():将字符串转为字符数组
- static String valueOf():将指定类型数据转换成字符串 注意:静态成员方法调用方式 类名.方法
- String replace(old,new):将指定字符(串)替换成新的字符(串)
- String split(String):切割字符串
- String trim():去除字符串两端空白符
public static void main(String[] args) {
String a1 = "abc";
//字符串转字节数组
byte[] bys = a1.getBytes();
for (byte by : bys) {
System.out.println(by);
}
System.out.println("---------------------");
//字符串转字符数组
char[] chs = a1.toCharArray();
for (char ch : chs) {
System.out.println(ch);
}
System.out.println("---------------------");
//整型转字符串
int num = 123;
String s1 = String.valueOf(num);
System.out.println(s1 + 4);
System.out.println("---------------------");
// 替换
String ss = "aaabbbccc";
String ss_r = ss.replace('a', 'd');
System.out.println("ss: " + ss);
System.out.println("ss_r: " + ss_r);
System.out.println("----------------------");
//分割字符串
String s2 = "abc abc abc abc";
String[] s3 = s2.split(" ");
for (String s : s3) {
System.out.println(s);
}
System.out.println("---------------------");
// 去除前后空格
String s4 = " jdj jdssdja ljl ";
String s5 = s4.trim();
System.out.println(s4);
System.out.println(s5);
}
字符串处理:StringBulider 和 StrngBuffer
简介:
可变字符序列,用于构造字符串对象。内部使用自动扩容的数组操作字符串数据。StringBuilder和StringBuffer使用相同的API。
构造方法:
StringBuilder():构造一个空的StringBuilder容器
StringBuilder(String):构造一个StringBuilder容器,并添加指定字符串
成员方法:
- StringBuilder append(...):将任意数据添加到StringBuilder容器中
- String toString():将当前StringBuilder容器转为字符串
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("adc");
sb.append("def");
sb.append("ghi");
System.out.println(sb);
String s1 = sb.toString();
System.out.println(s1);
StringBuilder sb2 = new StringBuilder("odaojdsdoa");
System.out.println(sb2);
}
日期获取:Date和Calender
简介:
日期和日期类,用于操作日期相关信息
构造方法:
Date():构造一个日期对象,当前系统时间,精确到毫秒
Date(long):构造一个日期对象,时间为自“1970年1月1日 00:00:00GMT”起,至指定参数的毫秒数
成员方法:
- long getTime():将日期对象转换成对应时间的毫秒值
- static Calendar getInstance():根据当前系统时区和语言环境获取日历对象
- int get(field):返回给定日历字段的值
- void set(int field, int value):将给定的日历字段设置为指定的值
public static void main(String[] args) {
Date d = new Date();
System.out.println(d);
// 转为毫秒值
long time = d.getTime();
System.out.println(time);
Date d2 = new Date(1614313146286L);
System.out.println(d2);
}
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
System.out.println(c);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + day + "日");
c.set(2022,1,1);
int year2 = c.get(Calendar.YEAR);
int month2 = c.get(Calendar.MONTH);
int day2 = c.get(Calendar.DATE);
System.out.println(year2 + "年" + (month2+1) + "月" + day2 + "日");
}
基本类型的包装类
简介:
基本数据类型不是对象,所以Java针对基本类型提供了对应的包装类,以对象的形式来用
- 装箱 :基本类型转包装类型(对象类型)
- 拆箱:包装类型转基本类型
- byte ---> Byte
- short ---> Short
- int ---> Integer
- long ---> Long
- char ---> Character
- float ---> Float
- double ---> Double
- boolean ---> Boolean
成员方法:
- static 基本类型 parseXxx(String):将字符串类型的数据转换成对应的基本类型
- 除了Character类以外,其他的7中包装类都有parseXxx()方法
- 字符串转char类型,直接toCharArray(),CharAt().
包装类的作用:将字符串类型的数据 转为对应的基本类型
public static void main(String[] args) {
String a1 = "200";
System.out.println(Integer.parseInt(a1));
String a2 = "718791879.278787";
System.out.println(Double.parseDouble(a2));
}