A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 厦门校区 黑马粉丝团   /  2018-10-23 20:10  /  1090 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天大家可以根据下面内容来整理今天所学,当然也欢迎自己的总结

1.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候需要调用toString()方法?
2.我们为什么要重写equals()方法?
3.==和equals()的区别?
4.String和StringBuilder的区别?
5.什么是包装类,和基本类型有什么区别?什么是自动装箱和自动拆箱?

3 个回复

倒序浏览
1.打印默认调用toString方法,object超类 中的toString返回为地址,地址或内容看有没有重写
2.不重写比的是地址值
3.前者比地址 后者看类中该方法的作用
3.后者长度可变  且节约空间和运行时间
3.将基本类型包装为一个类,现在的版本中自动装拆箱,无需使用调用方法在需要基本类型和包装类之间自动转换
回复 使用道具 举报
1.Object类
        1)toString()方法
        打印一个已创建的对象名等同于 对象名.toString()
        开发中需要得到对象的属性已字符串表示,需要重写toString()方法
        2)equals()方法
        默认比较的是地址值,返回的是一个 boolean 值
        需要进行对象的内容进行比较(比较属性),需要重写equals()方法,
2.时间日期类
        2.1)Date类
        -表示特定时间,有特有格式(中国东八区,基准时间+8个小时)
        -多种方法过时,由DateDormat类中的方法代替
                1)new Date();打印对象名得到        当前系统时间(英文)
                2)new Date(0L);打印对象名得到 标准基准时间        即1970年1月1日00:00:00 GMT
                3)new Date(86400000L);long类型数据,86400000L表示一天的毫秒值,
                 打印得到        基准时间推迟一天
                 
                4)成员方法
                public long getTime() 日期对象转换成对应的时间毫秒值
                long 变量名 = 对象名.getTime();
               
        2.2        DateDormat类
        -DateDormat类是一个日历类,也是一个抽象类,抽象类无法创建对象
        -子类 impleDateFotmat 类,子类创建对象
                1)格式化
                按照指定的格式,从Date对象转换为String对象.
                        1.创建子类对象
                        2.创建Date对象
                        3.对象名.format("yyyy年MM月dd日 HH时mm分ss秒"),括号内填        (指定时间格式)
                          把它交给String对象;
                          String date = 对象名.format("yyyy年MM月dd日 HH时mm分ss秒");
                          打印 date 得到 2018年10月24日 10时24分00秒
                2)解析
                按照指定的格式,从String对象转换为Date对象
                1.创建子类对象
                        2.创建Date对象
                        3.对象名.format("yyyy年MM月dd日 HH时mm分ss秒"),括号内填date对象名也可以
                          把它交给Date对象;
                          String date = 对象名.format("2018年10月24日 10时24分00秒");
                          打印date 得到 Sun Aug 08 15:51:54 CST 2088
                        [1注意事项1]
                        做解析的时候,所用的方法后都要在方法名() 括号后面加上 throws ParseException

3.System类
-此类不能被实例化,是一个太监类
-不能被继承,不能创建对象
-所有方法都用 static 关键字进行修饰,静态方法可以通过  类名称.方法名()  进行调用
        3.1)currentTimeMillis 方法
         返回以毫秒为单位的当前时间。用数据类型 long 进行接收.
        3.2)arraycopy 方法
        arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
                         (源数组,源数组索引起始位置,目标数组,目标数组索引起始位置,复制元素个数)
4.StringBuilder类
-String类型的字符串是常量,创建之后不能更改,字符串底层被final修饰.
-StringBuilder类型的字符串可以发生改变,默认16字符空间,超过自动扩充.
        4.1)构造方法
                1.StringBuilder(),空参
                2.StringBuilder(String str),字符串参数
        4.2)方法
                1.append(...),添加任意数据类型的字符串形式
                使用:对象名.append(任意数据类型的字符串参数);
                链式编程: 对象名.append(参数1).append(参数2).append(参数3)...;(返回的是对象)
                2.toString(),将当前StringBuilder对象转换为String对象
                String str = bu.toString();// StringBuilder转换为String对象
                  备注:StringBuilder已经覆盖重写了Object当中的toString方法。
                  
5.包装类
        5.1)装箱与拆箱       
                1.装箱:从基本类型转换为对应的包装类对象。        基本类型的数据 --> 包装类
                -valueOf(int i)/valueOf(Stirng str)// 返回一个表示指定的 int/String 值
               
                Integer in = new Integer(1);
                Integer in2 = Integer.valueOf(int或者String);
                2.拆箱:从包装类对象转换为对应的基本类型。         包装类 --> 基本类型的数据
                -intValue()// 以 int 类型返回该 Integer 的值。

                int i = in.intValue();
        5.2)自动装箱与自动拆箱
                从Java 5(JDK 1.5) 开始,有自动装拆
                1.自动装箱
                -直接把int类型的整数赋值包装类
        Integer in = 1; 就相当于 Integer in = new Integer(1);
                2.自动拆箱
                in是包装类,无法直接参与运算,可以自动转换为基本数据类型,在进行计算
                int a = in + 2;// 3
               
               
---------------
1.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候需要调用toString()方法?
        打印对象默认得到的是地址值,得到内容可能是该类重写了toString方法,
        打印的时候就调用了.
2.我们为什么要重写equals()方法?
        在程序中,我们的需求不是比较地址值,而是比较属性是否相同
3.==和equals()的区别?
        == 在基本数据类型是数据值的比较,
        == 在引用数据类型是时地址值的比较,
        equals方法比较的是引用数据类型,继承Object的equals底层也是==实现的,用于比较两个对象的内容是否相等
       
4.String和StringBuilder的区别?
        String存储的字符串不可改变
        StringBuilder储存的字符串可以发生改变,默认16字符,超出自动扩充
       
5.什么是包装类,和基本类型有什么区别?什么是自动装箱和自动拆箱?
        基本数据类型变成包装类(引用数据类型),给对象使用
        区别:
        1.基本类型存储在堆里,包装类型存储在栈里.
        2.包装类是对象,拥有方法和字段,对象的调用是引用对象的地址。
        3.基本类型是值的传递,包装类是地址值传递。
        4.ArrayList<E>,泛型不能使用基本数据类型
       
        自动装箱:基本数据类型自动转换成为对应的包装类
        自动拆箱:包装类自动转换成为对应的基本数据类型
回复 使用道具 举报
1.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候需要调用toString()方法?
答:打印对象其实就是调用它的toString方法,如果某个对象的该方法没有被重写的话,打印的就是地址值,如果被重写的话,可以打印对象的属性等内容。

2.我们为什么要重写equals()方法?
答:因为equals如果没有重写的话,比较的是地址值,但是该功能与“==”重复了,往往我们要比较的是对象的内容是否一致,所以我们就要对其方法进行重写。

3.==和equals()的区别?
答:如果没有覆盖重写equals方法,那么Object类中默认进行“==”运算符的对象地址比较,“==” 比较的是两个对象的引用(内存地址)是否相同,只要不是同一个对象,结果必然为false。“==”也用来比较两个基本数据类型的变量值是否相等。
如果希望进行对象的内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,则可以覆盖重写equals方法。
equals() 比较的是两个对象的值(内容)是否相同。

4.String和StringBuilder的区别?
由于String类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象。由此可知,如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。
StringBuilder是个字符串的缓冲区,即它是一个容器,容器中可以装很多字符串。并且能够对其中的字符串进行各种操作。
它的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容。StringBuilder会自动维护数组的扩容。
通过toString方法,StringBuilder对象将会转换为不可变的String对象。

5.什么是包装类,和基本类型有什么区别?什么是自动装箱和自动拆箱?
答:Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的。但是我们在实际使用中经常需要将基本数据类型转化成对象,为了使用方便和解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八种基本数据类型对应的类统称为包装类(Wrapper Class),包装类均位于java.lang包。同时,对应的包装类会有一些方法可以调用。
装箱:从基本类型转换为对应的包装类对象。
拆箱:从包装类对象转换为对应的基本类型。

评分

参与人数 1黑马币 +1 收起 理由
李志超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马