达内课程-API(java.lang.Object和java.lang.String)
来源:互联网 发布:舒缦水暖床垫淘宝网 编辑:程序博客网 时间:2024/06/05 04:00
API
*Application Programming Interface
应用编程接口
*一切可以调用的东西
java.lang.Object(lang - language语言包lang中的类自动导入)
java.lang.String
java.lang.StringBuilder
java.lang.StringBuffer
正则表达式
java.util.regex.Pattern
java.util.regex.Matcher
基本类型包装类
java.math.BigDecimal
java.math.BigInteger
java.text.DecimalFormat
java.lang.Math
日期相关类型
java.util.Date
java.text.SimpleDateFormat
java.util.Calendar
java.util.GregorianCalendar
java.lang.Object
java中所有类的顶层父类
一个类如果不继承其他类,默认继承Object
class A /*extends Object*/{
}
方法
1、toString() 获得对象的字符串标识
Object中的实现是:
例如一个坐标点(3,4),如果直接把坐标点的对象toString()会得到如下:
com.xy.www.@a18wfe7
包名@内存地址
如果想得到(3,4)格式的,可以在子类中重写这个方法
2、equals(Object obj) 当前对象与参数对象obj比较是否相等
a.equals(b)
Object中实现是比较内存地址
如果分别有两个坐标点(3,4)和(3,4)这也是两个不相等的。因为内存地址不同
this == obj
(引用当前对象的内存地址) == (对象内存地址)
如果需要,可以在子类中重写这个方法,比较对象的属性是否相等
3、hashCode()
获得对象的哈希值
Object中默认实现是:
使用内存地址值作为哈希值
如果需要,可以在子类中重写这个方法
使用属性数据来计算产生哈希值
对象作为键,放入哈希表时,需要重写hashCode()
栗子:类中重写toString()和equals()
Point类
public class Point { private int x; private int y; public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public Point(int x, int y) { super(); this.x = x; this.y = y; } public Point() { super(); } @Override public boolean equals(Object obj) { if(obj == null) return false; if(obj == this) return true; if(!(obj instanceof Point)) return false; Point p = (Point)obj; return this.x == p.x && this.y == p.y; } @Override public String toString() { // TODO Auto-generated method stub return "("+x+","+y+")"; }}
Test
public class Test { public static void main(String[] args) { Point a = new Point(3,4); Point b = new Point(3,4); System.out.println(a.toString()); System.out.println(b.toString()); System.out.println(a==b); System.out.println(a.equals(b)); } }
运行结果
(3,4)
(3,4)
false
true
java.lang.String
封装char[]数组
创建对象过程
1、第一种方法
char[] a = {‘h’,’e’,’l’,’l’,’0’}
String s = new String(a);
2、第二种方法
String s = “hello”;
字符串的字面值(第二种方法)
第一次使用一个字面值时,
会在“字符串常量池”中新建实例
再次使用相同字面值时,直接访问常量池中存在的对象,而不会新建对象
栗子:验证字符串的字面值
Test
public class Test { public static void main(String[] args) { char[] a = {'h','e','l','l','o'}; String s1 = new String(a); String s2 = "hello"; String s3 = "hello"; System.out.println(s1); System.out.println(s2); System.out.println(s3); System.out.println(s1==s2); System.out.println(s2==s3); System.out.println(s1.equals(s2)); } }
运行结果
hello
hello
hello
false
true
true
不可变
字符串一旦创建出来,就不可变
String s1 = “abc”;
String s2 = “def”;
String s3 = “ghi”;
字符串连接效率低,每次连接都创建新实例
栗子:验证字符串连接效率
public class Test { public static void main(String[] args) { String a = "abcdefghijklmnopqrstuvwxyz"; String b = ""; long t = System.currentTimeMillis(); for(int i=0;i<1000;i++){ b += a; } t = System.currentTimeMillis() - t; System.out.println(t); } }
执行结果
21
- 达内课程-API(java.lang.Object和java.lang.String)
- Java.lang.String API笔记
- java.lang.string常用API
- interface ServletRequestsetAttribute(java.lang.String, java.lang.Object)
- API学习java.lang.Object.getClass
- API学习java.lang.Object.equals
- API学习java.lang.Object.hashCode
- API学习java.lang.Object.wait
- API学习java.lang.Object.toString
- API学习java.lang.Object.notify
- API学习java.lang.Object.notifyAll
- API学习java.lang.Object.finalize
- java.lang.String cannot be cast to [Ljava.lang.Object
- java.lang.String cannot be cast to [Ljava.lang.Object
- java.lang.String cannot be cast to [Ljava.lang.Object;
- java.lang.String cannot be cast to [Ljava.lang.Object
- java.lang.String 中 API 的使用
- 错误:java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.lang.String
- SDUT_2122 数据结构实验之链表七:单链表中重复元素的删除
- 51nod 1419 最小公倍数挑战
- Project Euler 21-25题
- Python实现插入排序
- 算法分析与复杂性原理 第一次上机 棋盘问题
- 达内课程-API(java.lang.Object和java.lang.String)
- css3 圆角
- java原生序列化和Kryo(dubbo)序列化性能比较
- CODEVS 1011 数的计算 & 2001NOIP普及组T1
- 洛谷 P1944 最长括号匹配_NOI导刊2009提高(1)
- jsp九大类值对象四大作用域
- Spring与Hibernate整合(配置模式)
- HDU
- 树梅派 内存交换空间swap 更改