•对象(Object):存在的具体实体,具备明确的状态和行为java
•类(Class):具备相同属性和行为的一组对象的集合,用于组合各个对象所共有操做和属性的一种机制web
•从类看对象:类定义能够视为一个具备相似特性与共同行为的对象的模板,可用来产生对象数组
•从对象看类:类的产生,是从少数实例,推广到大量类似实例的抽象化过程(abstraction)dom
•类是对象的设计图,对象是类的实例,生成对象要先定义类。类定义时使用class关键词,创建实例要使用new关键词。以类名称声明的变量,称为参考名称、参考变量或直接叫参考。函数
•一个原始码中能够有不少个类定义,但只能有一个是公开类,且文档中的主文档名必须与公开类名称相同。只要有一个类定义,编译程序就会产生一个.class文档。学习
•对象指定与相等性:this
当=用于基本类型时,是将值复制给变量,当==用于基本类型时,是比较两个变量储存的值是否相同。 当你在操做对象时,=是用在指定参考名称参考某个对象,而==是用在比较两个参考名称是否参考同一对象。 注意:别使用==或!=来比较两个对象实质内容值是否相同,要使用equals()
•为了让Java 基本类型像类同样使用spa
int-Integer long-Long byte-Byte float-Float double-Double boolean-Boolean
•在Java中,数组是对象。设计
•与C语言不一样,Java须要检查数组边界,越界会触发ArrayIndexOutOfBoundsException异常。3d
•不管System.arraycopy()仍是Arrays.copyof(),用在类类型声明的数组时,都是执行浅层复制。
•在Java中,字符串是java.lang.String实例,用来打包字符数组。
•在Java中,以""包括的字符串,只要内容相同(序列、大小写相同),不管在代码中出现几回,JVM都只会创建一个String实例。
•封装(Encapsulation)实际上使用方法(Method)将类的数据隐藏起来,控制用户对类的修改和访问数据的程度,隐藏对象细节,将对象看成黑箱进行操做。
经过构造方法(构造函数)封装初始化流程 经过成员方法(函数)封装操做 经过成员变量封装数据
•若是没有声明权限修饰的成员,只有在相同包的类程序代码中才能够直接存取,也就是“包范围权限”。若是想在其余包的类程序代码中存取某包的类或对象成员,则该类或对象成员必须是公开成员,在Java中要使用public加以声明。
•若是定义类时,没有撰写任何构造函数,编译程序会自动加入一个无参数、内容为空的构造函数,称为默认构造函数。能够定义多个构造函数,只要参数类型或个数不一样,这称为重载构造函数。
•在Java中,this()表明了调用另外一个构造函数,且this()调用只能出如今构造函数的第一行。
•被声明为static的成员,不会让个别对象拥有,而是属于类。
•以类命名实例来讲,首字母是大写,以static使用习惯来讲,是经过类名称与“.”运算符来存取。
•在static方法或区块中不能出现this关键字。static方法中不能用非static数据或方法成员。
•使用import static语法要注意名称冲突问题,有些名称冲突编译程序可经过如下顺序来解析。
局部变量覆盖:选用方法中的同名变量、参数、方法名称。 成员覆盖:选用类中定义的同名数据成员、方法名称。 重载方法比较:使用import static的各个静态成员,如有同名冲突,尝试经过重载判断。
没有看懂书上p86页代码中的:
int number = (int)(Math.random()*10);
经过上网百度,获得以下解释:
Math.random()是令系统随机选取大于等于0.0且小于1.0的伪随机double值,是Java、js等语言经常使用代码。 例如:Number=Math.random()*2+1,即设置一个随机1到3(取不到3)的变量。
因为之前学的for循环语法都是:
for(初始式;执行结果必须是boolean的重复式;重复式){
描述句;
}
因此当看到书上p96页的for循环语法时(具体语句以下),便感到很难理解。
for(int score:scores){
System.out.printf("学生分数:%d %n",score);
}
经过反复看书上的解释和上网查找资料,我知道了该语法是加强式for循环,执行结果其实与之前学的for循环语句相同 ,可是编写代码时会更简洁方便。其具体执行过程是:上面的程序片断取得scores数组第一个元素,指定给score变量 后执行循环体,接着取得scores中第二个元素,指定给score变量后执行循环体,依次类推,直到scores数组中全部 元素都访问完为止。
当敲到书上p124页的代码时,运行结果有问题,具体代码与错误以下:
通过反复看书中的代码实例与文字解析,我明白了该段代码中调用了函数,而书中给的代码并不完整,缺乏构造函数的部分,所以出现如图所示错误,因而,我试着将构造函数的代码片断补上,从新运行,最后运行成功,代码与结果以下:
总结:Java的构造函数语法,可以实现对象初始化流程的封装,封装对象初始化流程的好处是用户不用重复撰写对象初始化流程,甚至不须要知道对象如何初始化,而且只要修改构造函数的内容,从新编译并给予位码文档以后,用户便无须再修改程序。
在敲书上P128页的代码时,发现它与124页的代码有相同的问题,因而我再次补上构造函数的代码,原觉得此次会万无一失,结果运行时又出现了一个错误,截图以下:
因为这个错误与以前的错误相似,因此我认为应该也是缺乏了某些代码片断,因而我又回归教材,很快我便知道了错误所在,该段代码直接使用了store()方法,而没有定义储值用的store()方法,一样,我加上定义store()方法的代码后,程序便运行成功,截图以下:
总结:定义储值用的store()方法其实就是将储值重复流程封装到store()方法中,这么作的好处是用户不用再一遍一遍地敲储值的重复代码,而且在修改store()的流程时,也很方便,能够直接在定义的方法中修改。
这周学到第4、五章,我感受到Java这门课愈来愈难,开始本想经过看书来自学,后来发现仅仅只看书并不能彻底弄懂知识点,书中给出的代码实例也老是看不懂,因而,我继续看视频,边看边作笔记,不懂的地方也记下来,而后上网查找资料来弄懂,最后再敲书上的代码,发现比以前轻松许多。虽然这周学习Java感到吃力,但我完成学习任务后却以为颇有成就感。
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 4500行 | 30篇 | 350小时 | 能将java运用自如 |
第一周 | 150/150 | 2/2 | 15/15 | 学习了与java相关的基础知识 |
第二周 | 200/350 | 1/3 | 20/35 | 学习了java的基本语法 |
第三周 | 450/800 | 1/4 | 25/60 | 学习了对象和封装的相关知识 |