HeadFirstJava
java执行过程的来龙去脉
源代码——编译器——输出——java虚拟机
扩展名为.java ——扩展名为.class
不要直接用类名点变量来改变属性值,一般都用get、set方法。封装的基本原则:将你的实例变量标记为私有,并提供公有的getter与setter来控制存取动作。
实例变量永远都会有默认值,如果你没有明确的赋值给实例变量,或者没有调用setter,实例变量还是会有值的。
integer 0
float 0.0
boolean false
reference null
局部变量没有默认值,如果在变量被初始化前就要使用的话,编译器会显示错误。
(实例变量是声明在类内而不是方法中,局部变量是声明在方法中的)
面向对象思考就是要关注程序中出现的事物而不是过程。
将String类型转换为int类型: Integer.parseInt("3");
ArrayList
add,remove,contains,isEmpty,indexOf,size,get
c.getClass() ——告诉你此对象是从哪里别初始化的
c.hashCode() ——列出此对象的哈希代码,可以把它想成是唯一的一个ID
任何从ArrayList<Object>取出的东西都会被当作Object类型的引用而不管它原来是什么。且编译器无法将此对象识别为Object以外的事物。如果非要将Object类型转换为某个具体类型,可以用到强制类型转换,比如
Dog d = (Dog) object;//确定是一个Dog对象
if (object instanceof Dog){
Dog d = (Dog) object;
}//如果不能确定,可以用instance of 运算符检查。
Java的接口就好像是100%的纯抽象类(public abstract),所有接口的方法都是抽象的,所以任何Pet的类都必须要实现这些方法。
如何判断应该是设计类、子类、抽象类或接口呢?
1)如果新的类无法对其他的类通过 IS - A 测试时,就设计不继承其他类的类;
2)只有在需要某类的特殊化版本时,以覆盖或增加新的方法来继承现有的类
3)当你需要定义一群子类的模板,又不想让程序员初始化此模板时,设计出抽象的类给它们用
4)如果想要定义出类可以扮演的角色,使用接口
要点:
1)如果不想让某个类被初始化,就以abstract这个关键词将它标记为抽象的;
2)抽象的类可以带抽象和非抽象的方法;
3)如果类带有抽象的方法,则此类必定标识为抽象的;
4)抽象的方法没有内容,它的声明是以分号结束的;
5)抽象的方法必须在具体的类中运行;
6)Java所有的类都是Object直接或间接的子类;
7)方法可以声明Object的参数或返回类型;
8)不管实际上所引用的对象是什么类型,只有在引用变量的类型就是带有某方法的类型时才能调用该方法;
9)Object引用变量在没有类型转换的情况下不能赋值给其他的类型,若堆上的对象类型与所要转换的类型不兼容,则此转换会在执行期产生异常;
10)java不允许多继承;
11)实现某个接口的类必须实现它所有的方法,因为这些方法都是public与abstract的;
12)要从子类调用父类的方法可以用super这个关键词来引用。
堆与栈要点:
1)我们关心栈与堆这两种内存空间;
2)实例变量是声明在类中方法之外的地方;
3)局部变量是声明在方法或方法参数上;
4)所有局部变量都存在于栈上相对应的堆栈块中;
5)对象引用变量与primitive主数据类型变量都是放在栈上;
6)不管实例变量还是局部变量,对象本身都会在堆上
构造函数要点
1)构造函数不会被继承;
2)实例变量保存在所属的对象中,位于堆上;
3)如果实例变量是个对对象的引用,则引用与对象都是在堆上;
4)构造函数是个会在新建对象的时候执行程序代码;
5)构造函数必须与类同名且没有返回对象;
6)可以用构造函数来初始化创建对象的状态;
7)最好能有无参的构造函数让人可以选择使用默认值;
8)构造函数可以是公有、私有或不指定的
9)静态方法是不能调用非静态的变量,也不能调用非静态的方法
10)静态变量是在类被加载时初始化的
11)一个被标记为final的变量代表它一旦被初始化之后就不会改动,也就是说类加载之后静态final变量就一直会维持原值。
12)final的变量代表你不能改变它的值,final的method代表你不能覆盖掉该method,final的类代表你不能继承该类(也就是创建它的子类)
序列化——将对象的状态信息转换为可以存储或传输的形式的过程。
对象的序列化要点
1)可以通过序列化来存储对象的状态
2)对象必须实现序列化这个接口才能被序列化。如果父类实现序列化,则子类也就自动实现
3)当对象被序列化时,整个对象版图都会被序列化,这代表它的实例变量所引用的对象也会被序列化
4)除非该实例变量被标记为transient,否则,该变量在还原的时候会被赋予null或原始数据类型的默认值
如何启动新的线程?
1)建立Runnable对象(线程的任务)
Runnable threadJob = new MyRunnable();
2)建立Thread对象(执行工人)并赋值Runnable(任务)
Thread myThread = new Thread(threadJob);
3)启动Thread
myThread.start();
对于Thread而言,它是一个工人,而Runnable就是这个工人的工作。Runnable带有会放在执行空间的第一项,方法:run()。
synchronized关键词代表线程需要一把钥匙来存取被同步化(synchronized)过的线程。要保护数据,就把作用在数据上的方法给同步化。
TreeSet:以有序状态保持并可预防重复
HashMap:可用成对的name/value来保存与取出
LinkedList:针对经常插入或删除中间元素所设计的高效率集合
HashSet:防止重复的集合,可快速地寻找相符的元素
LinkedHashMap:类似HashMap,但可记住元素插入的顺序,也可以设定成依照元素上次存取的先后来排序。
如果把字符串放进Treeset而不是ArrayList,这些string会自动地按照字母顺序排在正确的位置。
Collections.sort(list);会把list中的stirng按照字母排序。
public <T extends Animal> void takeThing(ArrayList<T> list);//可以使用任何一种Animal的ArrayList
public void takeThing(ArrayList <Animal> list);//只能使用Animal的ArrayList
万用字符<?>
在方法参数中使用万用字符时,编译器会阻止任何可能破坏引用参数所指集合的行为。你能调用list中任何元素的方法,但是不能加入元素。
转载于:https://www.cnblogs.com/jingmengxintang/p/7275213.html
HeadFirstJava相关推荐
- headfirstjava最新版本下载_读过HeadFirstJava的大神进来看看
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 线程一章有个聊天程序,我运行之后客户端没将服务器的内容显示在JTextArea中,求解答 客户端程序 import javax.swing.*; impo ...
- 基于ssm整合的网上书城
基于ssm整合的网上书城 采用当前最流行的框架Spring-SpringMVC-MyBatis设计,分为前后台,前台用户可以购买书籍,后台管理员可以对书籍进行分类,增删改查 注意:本系统不支持jdk1 ...
- Java技术进阶推荐书单
1.启蒙篇 首先推荐的两本书是Java核心技术,这一套书是获得了第十三届Jolt生成效率大奖,大学的时候几乎是计算机学院的学生爱好Java编程的都会买这两本书进行扫盲.而且这两本书会随着JDK的版本迭 ...
- java基础-head first java
1.问:其他程序语言都可以用整数类型做判断条件,java可以这样吗? int x = 1; while(x){} 答:不行,java中的integer与boolean两种类型并不相容.只能用如下的bo ...
- Head First Java学习笔记(17):包、jar存档文件和部署
Java的部署 Java程序是由一组类所组成的,那就是开发过程的输出. 部署的选择: 1.本机:整个程序都在用户的计算机上以独立.可携的GUI执行,并以可执行的Jar来部署. 2.两种之间的组合:应用 ...
- head first java读书笔记
head first java读书笔记 1. 基本信息 页数:689 阅读起止日期:20170104-20170215 2. 标签 Java入门 3. 价值 8分 4. 主题 使用面向对象的思路介绍J ...
- how2j学习笔记(JAVA基础)
文章目录 学习的十点建议 常见的问题及解答 main()有什么作用? 类与对象有什么联系? 我可不可以忽略返回值? next和nextline有啥区别? 编译器和虚拟机有啥关系? ==与equals( ...
- 每天一本书 | Head First Java 中文版 【第13本】
编者荐语: 大家好,我是你们的朋友 朋哥. 最近有一个初学Java的朋友说学习Java很难,不知道怎么入手. 买书也不知道买什么书籍,买了很多看不懂的书籍,也没有任何作用,今天推荐一本适合初学者学习的 ...
- java学习笔记 head first java
文章目录 golang to java Head First Java final 一些与众不同的设计 staic初始化 primitive类型的包装 format 静态的import 内部类 常用包 ...
最新文章
- uncompressing linux .................................................后没反应解决办法
- vue.js - advance - render 函数小抄
- 0基础学python-零基础直接学习Python入门IT合适吗?
- jquery 二级导航
- 关于form/input 的autocomplete=off属性
- 流媒体的未来——视频技术如何演变
- TCP通过带外数据实现心跳检测机制
- 反射 字段_巧用 Protobuf 反射来优化代码,拒做 PB Boy
- 跟我学Android之二 第一个程序
- android javap命令生成自定义类签名
- RAID 0/1/5/6/00/(10/01)/50/60磁盘阵列逻辑容量计算公式
- 为MP3做一个英语词典
- 苹果笔记本什么系统_怎么把苹果笔记本系统改为win7系统?
- 综合日语第一册第八课
- Excel如何在同一单元格内同时添加公式和字符?
- 华为自带邮箱下载_华为用户进来看!微信主题气泡教程!怎么在微信里面设置气泡主题?...
- WEB前端学习笔记-HTML
- 不干胶标签的印刷工艺
- 不收版面费的学报汇总,欢迎补充!
- 完美型性格的优势和不足,完美型人格的职业发展