Object
顶级父类。任何一个类都将 Object 作为父类,也就意味着任何一个对象都可以赋值给 Object 对象。Object 类也是 Java 中唯一的一个没有父类的类。
(方法默认是 public 的,下面的是返回值类型)
   
     重要方法
clone()  --- 如果一个对象要想被克隆,那么这个对象对应的类必须实现 Cloneable 接口。
finalize() --- 通知 GC 回收垃圾,GC不一定启动,有跟没有都没多大区别
 
 
这里需要明确一个常识:

bin  二进制
oct  八进制
dec 十进制
hex 十六进制
 
练习:定义一个类表示用户
package cn.tedu.object;

public class ObjectExer1 {

    public static void main(String[] args) {

        User u1 = new User();
u1.setUsername("lili");
u1.setPassword("123"); User u2 = new User();
u2.setUsername("lili");
u2.setPassword("123"); System.out.println(u1.equals(u2));
} } class User{ private String username;
private String password; public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
} //hashCode的重写:
//如果两个对象equals为true,那么哈希码一致
//不同对象的哈希码要不同并且要做到散列分布
@Override
public int hashCode() {
final int prime = 31;//31 位有效位
int result = 1;//奇数为1
result = prime * result + ((password == null) ? 0 : password.hashCode());
result = prime * result + ((username == null) ? 0 : username.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (password == null) {
if (other.password != null)
return false;
} else if (!password.equals(other.password))
return false;
if (username == null) {
if (other.username != null)
return false;
} else if (!username.equals(other.username))
return false;
return true;
} }
String
最终类。代表字符串的类,所有的字符串都是 String 产生的对象。字符串是一个常量,定义好之后不可改变。
因为字符串是一个常量,所以它是共享的。 --- 只要值相同,用的都是同一个字符串
 
 
package cn.tedu.string;

public class StringDemo {

    public static void main(String[] args) {

        String str = "abc";
str = "def";
System.out.println(str); //s1指向方法区
String s1 = "ab";
//s2指向堆内存,堆内存指向方法区
String s2 = new String("ab");
//字符串在方法区中只存放一份,后续使用到值相等的字符串的时候使用的是同一个
String s3 = "ab";
//"a"和"b"是两个字面量
//字面量在参与运算的时候为了提高效率在编译时期就会运算
//String s4 = "a" + "b"; -> String s4 = "ab";
String s4 = "a"+"b";//结果是true //实际上底层是利用了StringBuilder中的append方法来完成
String s5 = "a";
//s5 = new StringBuilder(s5).append("b").toString();
//s5最后指向堆内存,堆内存再指向方法区
s5 = s5 + "b";//结果是false,不会优化
System.out.println(s1 == s2);//false
System.out.println(s1 == s3);//true
System.out.println(s1 == s4);//true
System.out.println(s1 == s5);//false
} }

所以在append()方法后面需要加上一个 toString() 方法,将StringBuilder 的返回类型转为 String 类型的!!

 
String[] strs ={……一百个元素……};//1
//将字符串数组中的所有元素进行拼接
//使用 + 进行拼接,整个过程要产生 301 个对象
for(String s : strs)
    str += s;//每拼接1次额外产生3个对象,拼接100次要额外产生300个对象
 
//使用 StringBulider 进行拼接 --- 整个过程中要额外产生 102 个对象
StringBuilder sb = new StringBuilder();  //1
for(String s : str)
    sb.append(s); //每拼接1次要额外产生 1 个对象,拼接100次要额外产生100个对象
String str = sb.toString();//1
 
如果拼接的字符串个数比较多,建议使用StringBuilder;如果个数比较少的话,就用+

练习:
1. 输入字符串,然后再输入 2 个数字(一个表示起始位置,一个表示结束位置),按照指定的数字截取一个字符串
解析:使用 String str = new String(cs, begin, end); 进行截取
 
2. 输入一个字符串,统计字符串中字母、数字和其他字符的个数
解析:使用 char c = str.charAt(i); 一个一个的比较,分别计数。
 
3. 输入一个字符串,将其中的数字提取出来并求和
dsho353sdhiha89dnso4  -> 3+5+3+8+9+4 = 32
解析:同上,也是使用 char c = str.charAt(i); 是数字就加上(-'0')
 
4. 输入一个字符串,将其中的数字提取出来并进行升序排序
解析:同上,也是使用 char c = str.chatAt(i); 只是不是数字相加了,而是放入数组中,然后调用 Array.sort(arr)
 
5. 输入一个字符串,统计其中每一个字符出现的次数
解析:需要设置一个boolean 类型的数组作为标记,count = 0 作为每一个的计数,然后外层循环从头到尾,内层循环控制从这一个向后,判断是否相等,相等就输出!!
 
注意:在 String 中提供了一系列操作而不改变原数组的方法
 
instanceof  ---- 判断对象和类的关系的
只要前边的对象是后边的类/子类/接口/子接口的实例,就返回 true(在后面遇到的判断几个类继承前边那个,找出某一个类,就可以使用这个关键字)
 
 
 

Java API 之 Object的更多相关文章

  1. Java学习(API及Object类、String类、StringBuffer字符串缓冲区)

    一.JAVA的API及Object类 1.API 概念: Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就 ...

  2. 【代码笔记】Java常识性基础补充(三)——Java的API及Object类、正则表达式、getTime()方法、DateFormat类、Calendar类

    1.0 Java 的API(API: Application(应用) Programming(程序) Interface(接口)) 2.0 Java API就是JDK中提供给我们使用的类,这些类将底层 ...

  3. Java的API及Object

    API: Java API就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可. 源文件使用方法: Object类概述: O ...

  4. Java的API及Object类、String类、字符串缓冲区

    Java 的API 1.1定义 API: Application(应用) Programming(程序) Interface(接口) Java API就是JDK中提供给开发者使用的类,这些类将底层的代 ...

  5. 代码块和Java的API及Object类

    代码块 局部代码块 特点: 以”{}”划定的代码区域,此时只需要关注作用域的不同即可 方法和类都是以代码块的方式划定边界的 构造代码块 优先于构造方法执行,构造代码块用于执行所有对象均需要的初始化动作 ...

  6. java 的API及Object类

    一 Java的API Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就是JDK中提供给我们使用的类,这些类 ...

  7. 【分布式】Zookeeper使用--Java API

    一.前言 上一篇博客我们通过命令行来操作Zookeper的客户端和服务端并进行相应的操作,这篇主要介绍如何通过API(JAVA)来操作Zookeeper. 二.开发环境配置 首先打开Zookeeper ...

  8. Java API 快速速查宝典

    Java API 快速速查宝典 作者:明日科技,陈丹丹,李银龙,王国辉 著 出版社:人民邮电出版社 出版时间:2012年5月 Java编程的最基本要素是方法.属性和事件,掌握这些要素,就掌握了解决实际 ...

  9. mybatis Java API

    既然你已经知道如何配置 MyBatis 和创建映射文件,你就已经准备好来提升技能了. MyBatis 的 Java API 就是你收获你所做的努力的地方.正如你即将看到的,和 JDBC 相比, MyB ...

  10. jboss7 Java API for RESTful Web Services (JAX-RS) 官方文档

    原文:https://docs.jboss.org/author/display/AS7/Java+API+for+RESTful+Web+Services+(JAX-RS) Content Tuto ...

随机推荐

  1. Go语言编写单元测试用例

    Go单元测试示例 example/ |--division.go |--division_test.go 为什么被测试文件和测试文件通常放到同一个文件夹下以及同一个声明包里 通常情况下,我们把被测试的 ...

  2. WinDbg符号配置

    符号文件介绍 它包含了应用程序二进制文件(比如:EXE.DLL等)调试信息,专门用来作调试之用,最终生成的可执行文件在运行时并不需要这个符号文件,但你的程序中所有的变量信息都记录在这个文件中.所以调试 ...

  3. 基于C#开源、功能强大、灵活的跨平台开发框架 - Uno Platform

    前言 今天大姚给大家分享一个基于C#开源.功能强大.灵活的跨平台开发框架:Uno Platform.通过 Uno Platform,开发者可以利用单一代码库实现多平台兼容,极大地提高了开发效率和代码复 ...

  4. 成本立降50%!在EKS上借助Karpenter部署大模型

    原文链接: https://aws.amazon.com/cn/blogs/containers/scaling-a-large-language-model-with-nvidia-nim-on-a ...

  5. .NET云原生应用实践(六):多租户初步

    本章目标 多租户简介 实现public租户下的用户数据隔离 出于开发进度考虑,本章暂不会完全实现多租户的整套体系,而是会实现其中的一小部分:基于默认public租户的数据隔离,并在本章节中会讨论多租户 ...

  6. php调试工具之firePHP

    让PHP可以像js一样利用浏览器的控制台调试代码  ------- FirePHP(http://www.firephp.org/) 1. 安装FirePHP插件 在Chrome浏览器的应用商店中,搜 ...

  7. 2024-11-27:字符串的分数。用go语言,给定一个字符串 s,我们可以定义其“分数”为相邻字符的 ASCII 码差值绝对值的总和。 请计算并返回字符串 s 的分数。 输入:s = “hello“

    2024-11-27:字符串的分数.用go语言,给定一个字符串 s,我们可以定义其"分数"为相邻字符的 ASCII 码差值绝对值的总和. 请计算并返回字符串 s 的分数. 输入:s ...

  8. CSS3 背景图片

    1.背景图大小(background-size) 这个属性设置单张背景图的大小,默认是原图的大小 当同时指定宽高时,会造成图片失真,如果要保持宽高比,可以使用 auto 字段让宽或者高自适应 值类型 ...

  9. C#委托的前世今生

    一.前言 大家好!我是付工. 十年前,刚开始学C#编程的时候,被委托困扰了很久. 今天跟大家分享一下关于委托的那些事儿. 二.委托原理 什么是委托? 抛开编程,委托是一个汉语词语,指的是把事情托付给别 ...

  10. cento 申请ssl证书笔记

    如果您的Certbot工具没有内置的Nginx插件,您可以尝试以下方法来申请证书并配置Nginx服务器: 安装Certbot的Nginx插件: sudo yum install certbot-ngi ...