一 Object类
1. Object
:位于
java.lang
包中,是所有类的父类
(
直接父类或是间接父类
)
(1) Object 类型的引用可以 存储任意类型的对象,体现多态的应用(2) Object 中定义的方法,所有类都可以使用 ( 访问权限允许 )
2.常用的方法:
(1) getClass() :返回引用中实际存储的对象类型(2) int hashCode() :返回哈希码值注意:不同的对象返回不同的哈希码值(3) boolean equals(Object obj) :判断两个对象的内容是否相等,相等 -true; 不等 -false(4) String toString() :返回对象的字符串形式
二 包装类
1.
包装类:基本数据类型对应的类成为包装类
(
位于
java.lang
包中
)
2.
基本数据类型对应的包装类:
基本数据类型 包装类型byte Byteshort Shortint Integerlong Longfloat Floatdouble Doublechar Characterboolean Boolean
3.
数据类型之间的转换:
// 基本数据类型 - 》 包装类型int a = 36;Integer i2 = new Integer(a);System.out.println(i2);Integer i3=Integer.valueOf(a);System.out.println(i3);/* public static Integer valueOf(int i) {if (i >= -128 && i <= 127)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);} * */// 包装类型 -> 基本数据类型int n = i2.intValue();System.out.println(n);// int -> Stringint a2 = 89;String str1 = a2+"";System.out.println(str1);System.out.println(a2+1); // 90System.out.println(str1+1); // 891// String -> intint n3 = Integer.parseInt("87a");System.out.println(n3);注意: String 转换为 int 类型,转换的 String 需要为纯数字内容,否则运行时报错,错误信息为:java.lang.NumberFormatException(数字格式转换异常 )
4.
自动装箱和自动拆箱:基本数据类型和包装类型之间可以直接相互转换的
5.
包装类通常可以区分有效数据和无效数据,例如:
0
和
null
三 String类
1. 获取字符串的方式
(1) String str1 = "hello";这种获取字符串的方式,在串池中完成字符串对象的创建,有- 不再创建(2) String str2 = new String("world");这种获取字符串的方式,先在堆空间中创建一个字符串对象,再查看字符串串池中是否存在该对象,存在- 无需创建,不存在- 再次创建
2. 常见的方法:
String str = "Hello";// 根据下标获取对应字符// 指定合理的下标范围,否则: java.lang.StringIndexOutOfBoundsExceptionchar c = str.charAt(2);System.out.println(c);System.out.println(str.length());// 遍历字符串for(int i=0;i<str.length();i++){System.out.println(str.charAt(i));}System.out.println(str.indexOf("elle"));// 获取字符在当前字符串出现的第一个字符下标, 没有,返回-1System.out.println(str.contains("ell"));//判断指定字符串是否在当前字符串中存在System.out.println(str.toLowerCase()); // 大写 - > 小写System.out.println(str.toUpperCase()); // 小写- 》大写System.out.println(str.startsWith("he"));// 判断是否以 xx 开头System.out.println(str.endsWith("o"));// 判断是否以 xx 结尾String str2 = " he llo";System.out.println(str2);System.out.println(str2.trim()); // 去除前后空格String str1 = new String("Hello");String str2 = new String("hello");System.out.println(str1 == str2);System.out.println(str1.equals(str2));// 判断字符串内容System.out.println(str1.equalsIgnoreCase(str2));// 判断字符串内容,忽略大小写String str = "hello-world-java";String[] strs = str.split("-");for(int i=0;i<strs.length;i++){System.out.println(strs[i]);}String str3 = "he89weHfyfs9gguFYFYFY";// 统计以上字符串中大写字母的个数,并打印输出int count = 0;for(int i=0;i<str3.length();i++){char c = str3.charAt(i);if(c >='A' && c<='Z'){count++;}}System.out.println(count);
3.
不可变性:String
是常量,创建之后不可改变;字符串字面值存储在串池中,可以共享
4.
可变长的字符串:
StringBuffer :可变长字符串, JDK1.0, 线程安全,运行效率慢。StringBuilder :可变长字符串, JDK5.0, 线程不安全,运行效率快。