java基础18 String字符串和Object类

一、String字符串

问:笔试题:new String("abc")创建了几个对象?
答:两个对象,一个对象是 位于堆内存,一个对象位于字符串常量池

 1 public class Demo1 {
 2     public static void main(String[] args) {
 3         String str1="hello";
 4         String str2="hello";
 5         String str3=new String("hello");
 6         String str4=new String("hello");
 7         System.out.println("str1==str2?"+(str1==str2)+"+++++++");//true
 8         System.out.println("str2==str3?"+(str2==str3)+"-----");//false
 9         System.out.println("str3==str4?"+(str3==str4)+"=====");//false
10         System.out.println("str3.equals(str4)?"+(str3.equals(str4)));//true
11     }
12
13 }

结论:

1)对于==:
    如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
    如果作用于引用类型的变量,则比较的是所指向的对象的地址

2)对于equals方法:
    注意:equals方法不能作用于基本数据类型的变量
    如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
    诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

“equals” 和 “==”的解析

二、Object类

Object类是所有类的终极父类,任何一个类都继承Object类的

java是面向对象的语言,核心思想:找适合的对象做适合的事情
        方式一:自定义类,通过自定义类来创建对象.
        方式二:sun公司提供了很多类给我使用,我们只需要认识这些类,我们就可以通过这些类创建对象.

toString:返回该对象的字符串表示。返回字符串用于描述该对象
     疑问:toString有何作用?   答:重写toString子后,我们就可以直接输出一个新对象.

equals(Object obj) 用于比较两个对象的内存地址,判断两个对象是否为同一个对象. 
     hashCode():  返回该对象的哈希码值。(大家现在可以把哈希码当作内存地址)

2、查看源码的方式

方式一:按住 ctrl键,单击需要看的源码
    方式二:把光标移到你需要查看代码处F3

看源代码最忌讳的一点:不要每行代码都弄懂是什么意思,能看懂大概,猜出意思足以.

 1 public class Person{
 2
 3     int id;
 4     String name;
 5
 6     public Person(int id,String name) {
 7         this.id=id;
 8         this.name=name;
 9     }
10     //目前我们需要直接输出一个对象的时候,输出的格式:编号:110   姓名:狗娃 这个格式.目前Object
11     //toString方法无法满足子类的需求,那么这时候就应该从写object类的toString进行从写.
12     @Override
13     public String toString() {
14         return "编号:"+this.id+"姓名+"+this.name;
15     }
16     //为啥要从写呢:object的equals方法默认比较的是两个对象的内存地址,我们目前需要比较的是两个对象的身份证,所有object类的equals方法不符合我们现在的需求
17     @Override
18     public boolean equals(Object obj) {
19         Person p=(Person)obj;
20         return this.id==p.id;
21     }
22     public Person() {
23
24     }
25     public static void main(String[] args) {
26         Person p=new Person(110,"狗娃");
27         Person p1=new Person(110,"陈富斌");
28         System.out.println(p.hashCode());
29         System.out.println(p);//[email protected]  完整类名[email protected]+对象的哈希码   输出结果:编号:110 姓名:狗娃
30
31     }
32 }

原创作者:DSHORE

出自:http://www.cnblogs.com/dshore123/

欢迎转载,转载务必说明出处。(如果本文对你有用,可以点击一下右下角的 推荐,谢谢!

原文地址:https://www.cnblogs.com/dshore123/p/8947289.html

时间: 2024-11-08 19:43:24

java基础18 String字符串和Object类的相关文章

Java基础知识强化28:Object类之toString()方法

1. Object类的toString()方法: public  String  toString():返回该对象的字符串表示 2. 案例演示: (1)Student类: 1 package cn.itcast_02; 2 3 public class Student { 4 private String name; 5 private int age; 6 7 public Student() { 8 super(); 9 } 10 11 public Student(String name,

Java基础知识强化27:Object类之hashCode()方法、getClass()方法

1. Object类的hashCode()方法,如下: public  int  hashCode():返回该对象的哈希码值,这个值和地址值有关,但是不是实际地址值(哈希码值是根据实际地址值转化过来的整数值),你可以理解为地址值. 2. Object类的getClass()方法,如下: public  final  Class  getClass():返回此 Object 的运行时类(返回的类型是Class类,实际返回的是Class类的对象实体)                       Cl

Java基础知识强化26:Object类之Object类的概述

1.Object类 类Object是类层次结构的根类,每个类都使用 Object作为超类.所有对象(包括数组)都实现这个类的方法 每个类直接或者间接继承自Object类 2.Object类无参构造: public  Object() 回想面向对象中为什么说:子类的构造方法默认访问的是父类的无参构造. 答:这是因为所有类的共同父亲Object只有一个无参构造. 来自为知笔记(Wiz)

java基础---16. String字符串

1 字符串的构造方法和直接创建 /* java.lang.String类代表字符串 API当中说:Java程序中的所有字符串字面值(如:"abc")都作为此类的实例实现. 其实就是说:程序当中所有的双引号字符串,都是String类的对象.(就算没有new,也照样是.) 字符串特点: 1. 字符串的内容永不可变 2. 正因为字符串不可变,所以字符串是可以共享使用的. 3. 字符串效果上相当于char[]字符数组,但是底层原理是byte[]字节数组. 创建字符串的常见3+1种方式 3种构造

Java基础12:深入理解Class类和Object类

Java基础12:深入理解Class类和Object类 Java中Class类及用法 Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识,即所谓的RTTI. 这项信息纪录了每个对象所属的类.虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类.Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建. 说白了就是: Class类也是类的一种,只是名字和class关键字高度相似.Java是大小写敏感的语言.

Java知多少(35)Object类

Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每个类都由它扩展而来. 定义Java类时如果没有显示的指明父类,那么就默认继承了 Object 类.例如: 1 public class Demo{ 2 // ... 3 } 实际上是下面代码的简写形式: 1 public class Demo extends Object{ 2 // ... 3 } 在Java中,只有基本类型不是对象,例如数值.字符和布尔型的值都不是对象,所有的数组类型,不管是对象数组还

Java基础复习笔记系列 五 常用类

Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String s2 = “hello”:结论:s1 == s2. 字符串常量放在data区. 3. String s3 = new String("hello"); String s4 = new String("hello");结论:s3 != s4.但s3.equals(s4).

JAVA之旅(九)——Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类

JAVA之旅(九)--Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类 天天被一些琐事骚扰,学习还得继续 一.Object类 Object是什么呢?我们可以翻阅JAVA API文档看他的介绍 上面介绍说,object是类层次结构的根类,也就是超类 Object:是所有对象的直接后者间继承关系,传说中的老祖宗,你父亲还有父亲,你父亲的父亲还有父亲是爷爷,这是继承关系,但是你的祖宗却只有一位,该类中定义的肯定是所有对象都具备的功能

关于Java基础知识 String StringBuffer StringBuilder三者的区别

Java基础中String StringBuffer StringBuilder 以下介绍 相同点:String,StringBuffer,StringBuilder最终底层存储与操作的都是char数组,StringBuffer和StringBuilder都继承了AbstractStringBuilder 不同点:String:char数组是final的,不可变,修改String时实际上是new一个新String对象返回,线程安全,频繁的增删操作时不建议使用 StringBuffer:线程安全(