周一
1.常用类之Object (重点)
int hashcode():哈希码值(理解为"地址值",并非实际地址值) 了解 1)public int hashCode():获取对象的hash码值--->支持散列表 (支持key-value键值对) key value 1 张三 2 李四 3 王五 4 高圆圆 hashCode()(哈希算法 hash table)"理解为地址值", 不是真实地址值,每一个对象的hash码值不同 String toString():重点 2)String toString():返回对象的字符串表示形式,结果应该是 一个更容易让人读懂的信息表达式(建议所有的子类都覆盖这个方法) 几乎Java所有类都会重写toString()方法 idea--->alt+ins---->toString boolean equals(Object obj):比较两个数据(引用类型) 是否相等 public boolean equals(Object obj):指定其他对象与此对象 是"相等" ==和equals()方法区别? ==:比较两个基本类型,数据值是否相等 ==:连接是两个引用类型,比较的是地址值是否相等 而Object的equals方法,默认比较的是两个引用类型的地址值是否相等,建议子类需要重写这个equals(),重写之后比较的是 两个对象的成员信息是否相同!(Java中所有类都会重写!) ,重写equals方法,必须同时重写hashCode()方法 重写equals:比较每一个对象的成员信息是否相同 如果一样,还要比较每一 个成员信息 hashCode()哈希码值是否一样,如果都相同 系统认为这个两个人是一样的! alt+ins--->equals and hashcode方法 clone():克隆 Object的克隆方法 protected Object clone() throws CloneNotSupportedException 创建对象并返回它的"副本" 方法里面本身就会带有CloneNotSupportedException:克隆 不支持的异常(当要对某个Object的类进行克隆 如果这个类不能实现cloneable接口,那么就会出现这个异常)
2.Scanner类提供一个判断功能
构造方法
public Scanner(InputStream source) 创建键盘录入对象
创建一个文本扫描器
Scanner 对象名 = new Scanner(System.in) ;
--->System类---变量名
public static final InputStream in
成员方法:
nextXXX():获取功能
public int nextInt() :录入int类型
public String nextLine() ;录入String类型
判断功能:
public boolean hasNextInt():判断录入的下一个数据是否为int类型,是,返回true,否则false
public boolean hasNextLine():判断录入的下一个数据为一行内容
键盘录入的时候
先录入int,在录入String ----nextLine() ,这块会出现被漏掉("回车符号")
解决方案:
1)在第一个录入int之后,重新创建一个新的键盘录入对象Scanner ,然后在使用nextLine()
2)在录入String---- String next()
3.String以及StringBuffer(字符串缓冲区) (重点)
String类: 这个类final修饰不能被继承
-
字符串是不变; 它们的值在创建后不能被更改(字符串是一个常量,存储在常量池中)
构造方法:
public String():空字符串 类似于 String s = "" ;
public String(String original):构造一个字符串对象,里面指定一个字符串常量值
public String(byte[] bytes) :使用平台默认字符集(idea默认utf-8)解析解码--->字节数组--->字符串
String(byte[] bytes, int offset, int length) :将一部分字节数组构造成字符串
public String(char[] value):将字符数组---构造成String
public String(char[] value,int offseet,int len):将一部分字符串数组构造成字符串
区别
String s = new String("hello") 和String s = "hello" ; 有什么区别?分别创建了几个对象?(面试题)
前者:在堆内存中开辟空间,然后字符串值常量---指向常量池, 两个对象
后者:推荐的方式,直接常量赋值,直接在常量池中找,有就返回地址,没有,开辟常量空间!
String类相关的获取功能
1)public char charAt(int index) :获取指定索引处的字符
2)int length():获取字符串的长度
3)public String concat(String str)拼接功能-- 将一个字符串拼接到指定字符串的后面(末尾追加)
4)public String substring(int beginIndex):截取--->从指定位置开始截取,默认截取到末尾结束!
public String substring(int beginIndex, int endIndex) 截取--->从指定位置开始截取到指定位置结束
包前不包后(包含第一个位置,不包含最后一个位置,只能取到endIndex-1处)
5)public String[] split(String regex):拆分(分割) ,按照指定的分割符将字符串拆分成字符串数组
6)public int indexOf(int ch) :返回此字符第一次在字符串中出现的索引值
public int lastIndexOf(int ch):返回此字符最后一次在字符串中出现的索引值
String类的转换功能(编码和解码必须一致,否则乱码)
1)char[] toCharArray() 将字符串转换成字符数组
2)byte[] getBytes() 平台默认字符集编码(String--->byte[]) 和
byte[] getBytes(String charset): 指定的字符集进行编码
String(byte[] bytes) :(bytes[]--->String ) 平台默认字符集解码
String(byte[] bytes,String charset) :(bytes[]--->String ) 指定字符集解码
3)public String toLowerCase(): 将字符串转换成小写
public String toUpperCase(): 将字符串转换成大写
4)万能方法: 可以将任何数据类型---->String
public static String valueOf(int i/float....Object)
concat的用法 + substring()+转换功能---
需求:给定一个字符串,输入"Hellowold" ,输出 "hELLOWORLD"
1)可以录入字符串 s1
2)将字符串的一个字符截取出来 s2
substring(0,1) -->"H"----->转换小写 toLowerCase()
s1字符串 subString(1) ----> "ellowold"--->转换成大写 toUpperCase() --->s3
2)和3