目录

toString方法

final

抽象类和抽象方法


toString方法

先看一个程序:

结果如下:

可以看到,上面的程序和我们想要的结果并不一样,上面实际上是输出了p引用的Person对象。我们想要的结果是“Java",这里涉及到了toString()方法。所以下面两行代码的效果一样:

结果如下:

这个方法是Object类里的一个实例方法,所有的Java类里都有这个方法。Object类提供的toString()方法总是返回该对象实现类的"类名+@+hashCode"值,但是这个返回值并不是我们想要的真正的内容。如果想输出"Java"这个字符串,我们就要重写Object类里的toString()方法。

举个栗子:

结果如下:

实际上,toString()方法是一种“自我描述”方法,只不过没有重写的话,不能描述成我们想要看到的结果。

final

    1.final修饰的成员变量必须被程序员显式地赋初值;

    2.使用final修饰的形参不能被赋初值;

    3.final修基本类型变量和引用类型变量的区别:

    我们用程序来进行说明:

结果如下:

两个被注释掉的认为是非法的代码报错如下:

这个就很好理解了,主要就是看final修饰的是谁,修饰谁谁不能变,但是其他可以变。简单变量很好理解,引用变量就要注意不能变的是引用地址,而不是引用对象。

4.可执行“宏替换”的final变量

    对一个final来说,不管他是类变量、实力变量、还是局部变量,只要该变量满足以下三个条件,这个final变量就不再是一个变量,而是一个直接量:

(1)被final修饰符修饰;

(2)定义该变量时指定了初始值;

(3)该初始值可以在编译时就被确定下来。

eg:final  int  age = 5;运算表达式不,除了这种直接给一个值得情况,如果等号后面是一个运算表达式,简单的连接式,没有访问普通变量、调用方法,也看作是“宏变量”。

举个例子:

结果如下:

我们再看一个栗子:

结果如下:

也就是说,c和d并不相等。这里的a,b,c在编译时可以确定下来,但是d因为引用了普通变量(a,b是普通变量,不是宏变量),所以编译的时候没有确定下来。但是如果把a和b变成宏变量(加修饰符final),d就可以确定下来了:

结果为:

抽象类和抽象方法

1. 抽象方法和抽象类都要用abstract进行修饰。有抽象方法的类只能被定义成抽象类,但是抽象类中可以没有抽象方法。

2. 抽象类不能被实例化,无法使用new关键字调用抽象类的构造器来创建抽象类的实例。

3.抽象类不能用于创建实例,只能当作父类被子类继承。子类继承的时候,父类的所有抽象方法都必须实现。

举个栗子:

结果如下:

END

【2017.07】 这是补昨天的,学习进度不能停,空了就得相办法补回来,辛苦一点没关系,心里踏实。昨天带弟弟逛了大学校园,想让他提前感受一下大学,刺激他的学习。不过并不强求什么,毕竟还小,我也是现在才知道学习的意义,才开始有了学习的激情与渴望,小刺猬,加油!

《疯狂Java讲义》5相关推荐

  1. 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条

    http://blog.csdn.net/terryzero/article/details/3797782 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条 标签: swing编程 ...

  2. java下载pdf6_疯狂java讲义第6版 电子版(pdf格式)

    疯狂java讲义第6版pdf是李刚打造的经典java编程图书的最新版,为了帮助更多的读者能真正掌握Java编程,感受到Java语言的魅力,领会到Java编程的快乐,作者根据多年来的Java授课经验,精 ...

  3. 《疯狂Java讲义精粹》读书笔记2 ------ 多态

    -----------------<疯狂Java讲义精粹>2读书笔记--------------- Java引用变量有两个类型: · 编译时类型(由声明该变量时使用的类型决定) · 运行时 ...

  4. java画图颜色_手绘板,多种颜色选择。我抄的《疯狂java讲义》的,包我乱导的,但代码能用。...

    [java]代码库import javax.swing.*; import java.awt.image.*; import java.awt.datatransfer.*; import javax ...

  5. 《疯狂Java讲义》学习笔记 第六章 面向对象(下)

    <疯狂Java讲义>学习笔记 第六章 面向对象(下) 6.1包装类 基本数据类型 包装类 byte Byte short Short int Integer long Long char ...

  6. 李刚疯狂java讲义第3_【Java】-NO.16.EBook.4.Java.1.009-【疯狂Java讲义第3版 李刚】- 泛型...

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.009-[疯狂Java讲义第3版 李刚]- 泛型 Style:EBook Series:Java Si ...

  7. [疯狂Java讲义精粹] 第十三章|类加载机制与反射

    java.lang.reflect包下的接口和类, 包括Class, Method, Filed,Constructor和Array等, 这些类分别代表类, 方法, Field, 构造器和数组, Ja ...

  8. 疯狂Java讲义:P200接口

    接口 Output package lee; public interface Output {//接口里定义的成员变量只能是常量int MAX_CACHE_LINE=50;//接口里定义的只能是pu ...

  9. 疯狂Java讲义_Chapter4_编写控制台的五子棋游戏

    编写控制台的五子棋游戏 昨天复习了下<疯狂Java讲义>,完成前几章的习题, 现在基本完成了控制台五子棋游戏的编写,能够按照要求 保证用户下和电脑下的棋上不能已经有棋子 判断横.竖.左斜. ...

  10. 《疯狂Java讲义》读书笔记5

    目录 Java的集合类 Inerator 接口 Set 集合 HashSet 类 LinkedHashSet 类 TreeSet 类 EnumSet 类 List 集合 ArrayList 和 Vec ...

最新文章

  1. 我敢打赌,这是98%的程序员都想挑战的算法趣题!
  2. jittor和pytorch生成网络对比之unit
  3. 《互联网运营智慧》第7章“简单cdn”正式版下载
  4. python字符串写入excel-python 操作 Excel 之写入
  5. java 图片上传
  6. [工具]-PGP的使用方法
  7. 垃圾收集算法与垃圾收集器
  8. 如何利用光衰减器测试光纤收发器的灵敏度?
  9. 线程池简单实现java_简单实现java线程池
  10. Android异常总结---E/AndroidRuntime(23439): Caused by: java.lang.IllegalArgumentException: column '_id' d
  11. java 基本理论知识点
  12. 操作系统原理(二)操作系统逻辑结构、CPU的态和中断机制
  13. 计算机cad查询,电脑端如何快速查阅CAD图纸
  14. 数值分析(一) 牛顿插值法及matlab代码
  15. java写的小米商城_开发”小米商城官网首页”(静态页面)
  16. 宝可梦合体再次流行?Pokemon Fusion的技术实现
  17. 为什么建议使用你LocalDateTime,而不是Date?
  18. 对象及日期定时器、延时器
  19. Bootstrap -Card卡片
  20. 使用google浏览器添加并翻译英文无字幕视频

热门文章

  1. 求平方根的算法 牛顿迭代法和二分法
  2. MySQL8.0修改密码问题
  3. python3 time模块与datetime模块
  4. Angular组件--动态组件
  5. Android开源之BaseRecyclerViewAdapterHelper(持续更新!)
  6. 《Exchange Server 2010 SP1/SP2管理实践》一2.2 部署域名解析网络环境
  7. 亚马逊新品流量是上架开始算吗?
  8. CSS网页制作布局实例教程
  9. Oracle常用知识
  10. linux软件包安装方式汇总