转瞬间我们已经工作完一周了,这周开始阿Q要不定时升级知识了,先让我们来学习一下java中的Object与string类吧。
API:Application Programming Interface 应用程序编程接口,Java API就是Java提供给我们使用的类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只要要学习这些类如何使用。
Object:所有类都直接或者者间接的继承自Object类,是类层次结构的根类。
public int hashCode()
代码:
public static void main(String[] args) { Object object = new Object(); int hashCode = object.hashCode(); System.out.println(hashCode); //26171428 Student s1 = new Student("张三", 23); Student s2 = new Student("李四", 24); Student s3 = s1; System.out.println(s1.hashCode()); //6330655 System.out.println(s2.hashCode()); //31782850 System.out.println(s3.hashCode()); //6330655 与s1的hashCode值相同 }
public final Class getClass():此方法被final修饰表示不能被重写。此方法返回此 Object 的运行时类对象,也就是Class类的一个对象,此对象用来形容类的class文件。
public static void main(String[] args) { Student s = new Student("张三", 23);//创立Student对象 s //s对象调用getClass()返回一个形容Student类的class文件的对象,也就是Class类的对象 Class clazz = s.getClass(); //clazz对象调用 Class类的getName() 返回一个String类型,类的全路径名 String name = clazz.getName(); System.out.println(name); Student s1 = new Student(); //新创立了一个s1对象 //s1对象调用getClass() 返回一个形容Student类的class文件的对象,也就是Class类的对象 Class clazz1 = s1.getClass(); //由于clazz和clazz1都是形容Student类的class文件的对象 所以他俩是同一个对象 System.out.println(clazz == clazz1); }
Object的toString()
我们在打印一个对象的时候,默认调用的是对象的toString方法,假如该对象没有重写toString(),那么调用的是Object的toString()方法,由于继承了Object嘛;
Object的toString方法返回类的全路径名称 + @ + 16进制哈希值, 这样返回一般没有意义;
Object类中toString()的源码
public Stirng toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()) }
我们一般在编写类的时候都重写Object的toString(),一般要求是把类里面的属性都显示出来;
代码:
public class Student { String name; int age; public Student(String name, int age){ this.name = name; this.age = age; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + "]"; }}public static void main(String[] args) { Student s = new Student("张三", 23); System.out.println(s); //这句话就相当于 System.out.println(s.toString());}
Object的equals()
Object中equals方法的源码
public boolean equals(Object obj){ return (this == obj);}
比较的引用类型的地址值,开发中我们调用equals方法是想比较对象里面的属性值,所以在编写类的时候一般重写Object中的equals方法,让其比较对象的属性值。
代码:
public class Student { String name; int age; public Student(String name, int age){ this.name = name; this.age = age; } //重写equals方法 //参数必需是Object,由于重写Object的方法,方法体必需和Object的equals方法一模一样 @Override public boolean equals(Object obj) { Student s = (Student)obj;//由于obj不能调用Student特有的内容,所以向下转型 return this.name.equals(s.name) &&this.age == s.age; //this.name.equals(s.name) 这儿的equals方法是String类重写Object后的equals方法 } } public static void main(String[] args) { Student s1 = new Student("张三", 23); Student s2 = new Student("张三", 23); boolean b = s1.equals(s2); //比较2个对象属性能否相同 System.out.println(s1 == s2); //false 比较的是两个对象的地址值能否相同 System.out.println(b); //true }
Scanner
public static void main(String[] args) { Scanner sc = new Scanner(System.in); //创立键盘录入对象 if(sc.hasNextInt()) { //判断键盘录入的能否是int类型的数据 int i = sc.nextInt(); //键盘录入的数据存储在i中 System.out.println(i); }else { System.out.println("输入的类型错误"); } }
bug问题:先用nextInt()接收int类型,再用nextLine()接收字符串的时候,会导致nextLine() 直接把回车接收到了, nextLine 不能继续接收字符串了。
构造方法
String s = "abc"; s就是String的一个对象 public String():空构造 public String(byte[] bytes):把字节数组转成字符串 public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串 public String(char[] value):把字符数组转成字符串 public String(char[] value,int index,int count):把字符数组的一部分转成字符串 public String(String original):把字符串常量值转成字符串
代码:
public static void main(String[] args) { String s = "abc"; System.out.println(s1); //打印出:abc String s1 = new String(); System.out.println(s1); //s1是个空串 byte[] arr1 = {97,98,99}; String s2 = new String(arr1); //解码,将计算机读的懂的转换成我们读的懂 System.out.println(s2); //打印出:abc byte[] arr2 = {97,98,99,100,101,102}; String s3 = new String(arr2,2,3); //将arr2字节数组从2索引开始转换3个 System.out.println(s3); //打印出:cde char[] arr3 = {'a','b','c','d','e'}; //将字符数组转换成字符串 String s4 = new String(arr3); System.out.println(s4); //打印出:abdcde String s5 = new String(arr3,1,3); //将arr3字符数组,从1索引开始转换3个 System.out.println(s5); //打印出:bcd String s6 = new String("heima"); System.out.println(s6); //打印出 :heima }
String的判断功能
String的获取功能
String的转换功能
byte[] getBytes():把字符串转换为字节数组。
char[] toCharArray():把字符串转换为字符数组。
static String valueOf(char[] chs):把字符数组转成字符串。
static String valueOf(int i):把int类型的数据转成字符串。
注意:String类的valueOf方法可以把任意类型的数据转成字符串。
String toLowerCase():把字符串转成小写。
String toUpperCase():把字符串转成大写。
String concat(String str):把字符串拼接。
String的其余功能
String和字符数组的转换
String --> char[]==>toCharArray();
char[] --> String
==> new String(char[] chs);
==> static String valueOf(char[] chs);
String和字节数组的转换
String类的知识就先讲到这里了,想理解更多学习知识,请关注微信公众号“阿Q说”,获取更多学习资料吧!你也可以后端留言说出你的疑惑,阿Q将会在后期的文章中为你解答。每天学习一点点,每天进步一点点。
【整站打包+手机版】小学网站,初级中学网站,高中网站源码 未央区新华小学网站源码
TxT多线程数据分析生成PDF源码
食品餐饮小吃类网站模板
PHP小说网站源码 自动生成txt+zip压缩+全自动采集+漂亮WAP
2021年新版简单大气手机APP分发下载页面,安卓苹果app下载页,H5自适应站点html模板网站
discuz模板:迪恩摄影Pai(7配色) 商业版(GBK) 价值268元
蜜游旅游网/旅游资讯类网站源码整站带数据
志汇-门店会员卡小程序 V4.8.1 全开源版,亲身打包,亲测经营
PHP交友网站源码,交友整站系统源码,手机版交友网站源码
自适应手机版集团企业网站集团公司通用网站源码集团官网企业官网金融科技类通用型网站