类 Object 是类层次结构的根类。每个类都使用 Object 作为超类(父类)。所有对象(包括数组)都实现这个类的方法。
public int hashCode()返回该对象的哈希码值
hashCode()----->通过哈希算法(哈希表:hashtable)---->地址值(不是实际意义上的地址值!)
public final Class getClass()返回此 Object 的运行时类 (Java反射机制中讲!)
Class类中有一个方法:
public String getName()以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。
Object的另一个方法:
public String toString();返回该对象的字符串表示(建议所有子类都重写此方法)
Integer类中有一个方法:
public static String toHexString(int i):将一个int类型的数据转换成一个十六进制的字符串表现形式
如果直接输出对象名称,想要显示当前对象的成员变量的值,那么必须重写Object类中的toString()方法
Object中的另一个方法:
public boolean equals(Object obj)指示其他某个对象是否与此对象“相等”。
面试题:
==和equal()方法的区别
==:比较的是两个对象的地址值是否相同,
equals()方法默认比较的是两个对象的地址值是否相同,如果重写了Object类中的equals()方法,那么默认比较就是两个对象的内容是否相同
使用工具自动生产equals()方法
javascript:Array对象,Number对象,String对象,valueOf():====>s1.valueOf(s2) ;比较是内容是否相同
Object类中的其他两个方法:
protected void finalize()throws Throwable:当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法,但是,什么时候调用垃圾回收器
不确定;
System类中的一个方法:
public void gc():运行垃圾回收器,这个垃圾回收器最终调用的就是finalize()方法
protected Object clone()创建并返回此对象的一个副本
throws CloneNotSupportedException
注意事项:
Object 类的 clone 方法执行特定的复制操作。首先,如果此对象的类不能实现接口 Cloneable,则会抛出 CloneNotSupportedException
.
使用clone()方法,当前对象所在类需满足条件如下
1)Scanner:用来创建一个文本扫描器(键盘录入)
2)java高级特性:IO流(后面讲)
BufferReder:字符缓冲流来键盘录入
java.util.Scanner;s
Scanner sc = new Scanenr(System.in);
System类中的静态字段:
public static final InputStream in: 标准输入流
InputStream :字节流InputStream is = System.in ; 实质:抽象类多态
public static final OutputStream out: 标准输出流
开发步骤:
1)创建键盘录入对象
2)录入数据
3)输出
Scanner类中常用的方法:
判断的功能:
细节:可以添加逻辑判断
hasNextXXX(); 在录入数据之前,加上判断功能,判断是否由下一个可以录入的XXX类型的数据
nextXXX();//通过录入获取这个int类型的数据
举例:
public boolean hasNextInt()
nextInt();
nextInt():录入int类型的数据
nextLine():录入一个字符串类型
java.util.InputMismatchException:输入和想到的数据不匹配
Scanner类中的注意事项:
先录入int类型的数据,在录入String类型数据,第二次录入的数据没有接收到,直接输出结果了,由于"回车"才能接收数据
回车换行符导致的!
解决方案:
*在第二次录入String类型数据之前,需要重新创建键盘录入对象录入String类型
String类:
代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现;字符串一旦被赋值,其值不能再改变
String类常用的构造方
法:
String():表示一个空字符序列。
public String(byte[] bytes,Charset ch):默认字符集(编码格式):GBK,如果是GBK格式,可以不写第二个参数
public String(byte[] bytes,int index,int length):将部分字节数组构造成一个字符串
public String(char[] value):将字符数组构造成一个字符串
public String(char[] value,int index,int length):将部分的字符数组构造成一个字符串
public String(String original):通过字符串常量构造一个字符串对象
*
获取字符串的长度功能:
public int length()
面试题:
数组中有没有length(),字符串(字符串缓冲区:StringBuffer)中没有length(),集合中有没有length()(集合后面讲)?
数组没有length(),length属性
字符串中有length()
集合中没有length(),获取集合中元素数量:size()
*
编码和解码:一定要保证编码格式一致
编码:
把能看懂的东西转换成一个看不懂的东西:String----->byte[]:public byte[] getBytes(String charsetName)
解码:
把当前的byte[]转成能看懂的东西(String):byte[]----->String :public String(byte[] bytes,CharsetName ch)
举例:
谍战片:
今天老地方见:
编码:"今"----->字节数组:byte[]---->字节类型:形成一种二进制数据
解码:二进制数据---->十进制进制数据----->String:"今"
字符串的一个特点:一旦被赋值,其值不能被改变(不可变的字符序列)
面试题:
String s = "hello"
和String s = new String("hello") 两个有什么区别?分别创建了几个对象
第一个创建了一个对象
第二个s创建两个对象(堆内存中有new String(),然后字符串常量池中也有这样一个字符串常量(开辟空间的地址))
String类的中常用的判断功能:
boolean equals(Object obj):当前该对象是否obj这个对象是否相等;
boolean equalsIgnoreCase(String str):比较字符串是否相等,忽略大小写
boolean contains(String str):判断str这个字符串是否包含在当前字符串中
boolean startsWith(String str):是否以str子字符串开头
boolean endsWith(String str):判断是否以str子字符串结尾
boolean isEmpty():判断字符串是否为空
String s = ""
;空字符
String s = " " ;字符串"空格"
String s = null ;当前字符串对象为空
字符串变量相加,先开辟空间,在相加
字符串常量相加:首先在字符串常量池找,有没有当前这个常量值,有,就直接返回,没有,需要创建!
看程序写结果
Stringtest
需求:模拟用户登陆,给3次机会,并给提示
分析:
假设:定义一个用户和密码
String name = "admin" ;
String password = "admin" ;
2)创建键盘录入对象,录入用户名和密码
3)给3次机会,使用for循环进行操作for(int x = 0 ; x <3 ; x ++){}
录入:录入的用户和密码来和已经存在的用户名和密码进行比较,
判断:如果一致:
登陆成功
不一致:
有一个不符合,就登陆不成功
if((2-x)==0){
}else{
输出还有(2-x)次机会
本文深入讲解Java中的核心类,如Object、String及Scanner类的基本用法与重要特性,包括类层次结构、字符串处理技巧和键盘输入操作。
2857

被折叠的 条评论
为什么被折叠?



