自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 《Head First Java》20201031读书笔记

P548-P559《Head First Java》20201031读书笔记sort()方法以泛型的观点来说,extend代表extend或implement对泛型来说,extends这个关键词代表“是一个···”,且适用于类和接口。public static <T extends Comparable<? super T>> void sort(List list)Song类必须实现Comparable我们只有在Song类实现Comparable的情况下才能把Ar

2020-10-31 18:59:39 122

原创 《Head First Java》20201030读书笔记

P529-P547《Head First Java》20201030读书笔记第16章 集合与泛型Java集合框架(Collections Framework)能够支持绝大多数你会用到的数据结构。泛型意味着更好的类型安全性运用泛型你就可以创建类型安全更好的集合,让问题尽可能在编译期就能抓到,而不会等到执行期才冒出来。如果没有泛型,编译器会很愉快地接受你把绵羊对象送到老虎集合中。创建被泛型化类的实例声明与指定泛型类型的变量声明(与调用)取用泛型类型的方法使用泛型的类:类的声明;新元

2020-10-30 22:50:19 91

原创 《Head First Java》20201029读书笔记

P501-P528《Head First Java》20201029读书笔记线程如果想要确保其他的线程有机会执行的话,就把线程放进睡眠状态。当线程醒来的时候,它会进入可执行状态等待被调度器挑出来执行。确保线程能够有机会执行的最好方式是让它们周期性地去睡一下,只要调用sleep()这个方法,传入以毫秒指定的时间就行。Thread.sleep(2000);写的线程或许永远不会被中断,这个异常是API用来支持线程间通信的机制,良好的习惯规则会要求我们把有可能抛出异常的调用做妥善的处理。使用sl

2020-10-29 22:27:47 88

原创 《Head First Java》20201028读书笔记

P486-P500《Head First Java》20201028读书笔记线程我们需要同时执行的能力,检查服务器信息的同时不会打断用户与GUI的交互。因此用户可以输入信息或滚动接受画面,还需要有东西在背景持续地读取服务器的数据。这意味着我们需要新的线程(thread),一个独立的执行空间(stack)。我们想要让只能发送的版本可以维持原来的执行,同时有新的进程(process)并行地读取服务器的信息并将它显示在文本区域上。Java的multithreadingJava在语言中就有内置多线程

2020-10-28 17:11:23 138

原创 《Head First Java》20201027读书笔记

P471-P485《Head First Java》20201027读书笔记第15章 网络与线程连接到外面的世界。Java程序可以向外扩展并触及其他计算机上的程序。所有网络运作的低层细节都已经由java.net函数库处理掉了。Java的一项好处是传送与接收网络上的数据只不过是链接上使用不同链接串流的输入/输出而已。如果有BufferedReader就可以读取,若数据来自文件或网络的另一端,则BufferedReader不用花费很多精力去照顾。在这一章中,使用socket来连接外面的世界,我们

2020-10-28 16:14:19 86

原创 《Head First Java》20201026读书笔记

P460-P469《Head First Java》20201026读书笔记Version ID:序列化的识别如果将对象序列化,则必须要有该类才能还原和使用该对象、会损害解序列化的修改:删除实例变量改变实例变量的类型将非瞬时的实例变量改为瞬时的改变类的继承层次将类从可序列化改成不可序列化将实例变量改成静态的e通常不会有事的修改:加入新的实例变量(还原时会使用默认值)在继承层次中加入新的类从继承层次中删除类不会影响解序列化程序设定变量值的存取层次修改将实例变量从瞬时改成非

2020-10-28 15:16:47 47

原创 《Head First Java》20201025读书笔记

P447-P459《Head First Java》20201025读书笔记把字符串写入文本文件//序列化的对象objectOutputStream.writeObject(someObject);//字符串fileWrite.write("My first String to save");文本文件范例:e-Flashcardjava.io.File classFile这个类代表磁盘上的文件,但不是文件中的内容。用String的split()解析用FileWriter这个连接串

2020-10-25 21:39:04 50

原创 《Head First Java》20201024读书笔记

P429-P446《Head First Java》20201024读书笔记第14章 序列化和文件的输入/输出对象可以被序列化也可以展开。储存对象把数据写到某处,这可能是个磁盘上的文件,或者是来自网络上的串流。此处谈论不涉及使用数据库的情况。如果只有自己写的Java程序会用到这些数据:用序列化将被序列化的对象写到文件中。然后就可以让你的程序去文件中读取序列化的对象并把它们展开回到活生生的状态。如果数据需要被其他程序引用:写一个纯文本文件。用其他程序可以解析的特殊字符写到文件中。例如

2020-10-25 21:17:15 53

原创 《Head First Java》20201023读书笔记

P413-P《Head First Java》20201023读书笔记操作Swing组件几个常用组件:text field、可滚动的text area、checkbox以及list。JTextFieldJTextAreaJCheckBoxJList创建BeatBoximport java.awt.*;

2020-10-23 23:45:44 102

原创 《Head First Java》20201022读书笔记

P399-P412《Head First Java》20201022读书笔记第13章 运用Swing所有的组件都是继承自java.swing.JComponent布局管理器(Layout Managers):负责组件的大小与位置安排。border、flow和box要点布局管理器会控制嵌套在其他组件中组件的大小和位置。当某个组件加到背景组件上面时,被加入的组件是由背景组件的布局管理器管理的。布局管理器在做决定之前会询问组件的理想大小,并根据策略来决定采用哪些数据。BorderLayo

2020-10-22 22:59:07 58

原创 《Head First Java》20201021读书笔记

P378-P398创建内部类的实例class MyOuter{ private int x;//外部有个私有的x实例变量 MyInner inner = new MyInner();//创建内部的实例 public void doStuff(){ inner.go();//调用内部的方法 } class MyInner{ void go(){ x = 42;//内部可以使用外部的x变量 } }//关闭内部类}//关闭外部类事件的实用方法每个事件都要有的操作:

2020-10-21 23:30:31 54

原创 《Head First Java》20201020读书笔记

**P368-P377**《Head First Java》20201020读书笔记事件与图形事件GUI从创建window开始,通常会使用JFrame。JFrame frame = new JFrame();你可以这样加入按钮、文字字段等组件:frame.getContentPane( ).add(button);JFrame与其他组件不同,不能直接加上组件,要用它的content pane。要显示window,得指定尺寸和执行显示动作frame.setSize(300,300);fr

2020-10-21 23:17:58 114

原创 《Head First Java》20201019读书笔记

P353-P367《Head First Java》20201019读书笔记第12章 图形用户接口//第一个GUIimport javax.swing.*;//import进这个包public class SimpleGuil{ public static void main (String[] args) { JFrame frame = new JFrame(); JButton button = new JButton("click me"); //创建frame和butto

2020-10-19 23:48:47 130

原创 《Head First Java》20201018读书笔记

P342-P352《Head First Java》20201018读书笔记声音播放程序import javax.sound.midi.*;//要import进midi的包public class MiniMiniMusicApp{ public static void main(String[] args){ MinMinMusicApp mini = new MinMinMusicApp(); mini.play(); }//关闭main public void play(){

2020-10-18 23:51:27 196 2

原创 《Head First Java》20201017读书笔记

P335-P342《Head First Java》20201017读书笔记duck如果不想处理异常,可以把它duck掉来避开。JavaSound的MIDI类5个步骤:取得Sequencer并将它打开创建新的Sequence从Sequence中创建新的Track填入MidEvent并让Sequencer播放...

2020-10-17 21:58:59 771

原创 《Head First Java》20201016读书笔记

P326-P334《Head First Java》20201016读书笔记try/catch的流程控制finally:无论如何都要执行的部分finally块是用来存放不管有没有异常都得执行的程序。处理多重异常public class Laundry{ public void doLaundry() throws PantsException,LingerieExcpetion{//声明两个可能的异常类型 //有可能抛出两个异常的程序代码 }}public class Foo{

2020-10-17 21:21:41 70

原创 《Head First Java》20201015读书笔记

P315-P《Head First Java》20201015读书笔记创建MIDI音乐播放器创建一个声效应用程序,包括BeatBox Drum播放器。如何创建Swing GUI、如何通过网络连接到其他计算器,以及让我们可以把数据送出的输入/输出设备。JavaSound APIJavaSound被分为两个部分:MIDI和取样(sampled)。MIDI,MusicalInstrument Digital Interface,不同电子发声装置沟通的标准协议。在程序中,可以把MIDI想象成某种乐

2020-10-15 22:17:02 138

原创 《Head First Java》20201014读书笔记

P305-P316《Head First Java》20201014读书笔记运用Calendar对象字段会保存状态日期和时间可以运算日期与时间可以用milisecond来表示//运用Calendar对象的范例Calendar c = Calendar.getInstance();c.set(2004,1,7,15,40);//将时间设定为2004年1月7日15:40,注意月份是零基的long day1 = c.getTimeInMillis();//将目前时间转换为以milliseco

2020-10-14 23:15:01 83

原创 《Head First Java》20201013读书笔记

P293-P304《Head First Java》20201013读书笔记数字的格式化将数字以带逗号的形式格式化解析格式化结构格式指令:描述要输出的特殊格式。要格式化的值:不是所有东西都能被格式化。format("%, d",1000000000);//用这个格式将这个参数格式化这个指令代表什么?将此方法的第二个参数以第一个参数所表示带有都好哦的整数(decimal)方式表示。它会怎么做?在格式化指令中的%代表一项变量,此变量就是跟在格式化指令后面的参数,其余的字符各有所代

2020-10-14 00:04:51 60

原创 《Head First Java》20201012读书笔记

P287-P293《Head First Java》20201012读书笔记primitive主数据类型的包装每一个primitive主数据类型都有个包装用的类,且因为这些包装类都在java.lang这个包中,所以你无需去import它们。每个包装类都很好辨认,因为它的名称是照着所包装的类型所设定的,只是将第一个字母改为大写以符合命名惯例。BooleanCharacterByteShortIntegerLongFloatDouble//包装值int i = 288;Inter

2020-10-12 23:44:39 61

原创 《Head First Java》20201011读书笔记

P281-P《Head First Java》20201011读书笔记静态变量的起始动作静态变量会在该类的任何静态方法执行之前就初始化。静态项目的初始化有两项保证:静态变量会在该类的任何对象创建之前就完成初始化。静态变量会在该类的任何静态方法执行之前就初始化。class Player{ static int playerCount = 0;//playerCount会在载入类的时候被初始化为0. private String name; public Player(String n){

2020-10-11 23:09:14 68

原创 《Head First Java》20201010读书笔记

P273-P《Head First Java》20201010读书笔记Math方法:最接近全局的方法在Math这个类中的所有方法都不需要实例变量值。因为这些方法都是静态的,所以你无需Math的实例,会用到的只有它的类本身。int x = Math.round(42.2);int y = Math.min(56,12);int z = Math.abs(-343);//这些方法无需实例变量,因此也不需要特定对象来判别行为。非静态方法与静态方法的区别Java是面向对象的,但若处于某种特殊的

2020-10-11 11:20:42 50

原创 《Head First Java》20201009读书笔记

P256-P271《Head First Java》20201009读书笔记从某个构造函数调用重载版的另一个构造函数使用this()来从某个构造函数调用同一个类的另外一个构造函数。this()只能用在构造函数中,且必须是第一行语句。每个构造函数可以选择调用super()或this(),但不能同时调用。对象的生命周期对象生命周期你由引用变量的生命周期而定,又要看它是局部变量或实例变量。局部变量只会存活在声明该变量的方法中。实例变量的寿命与对象相同。如果对象还活着,则实例变量也会是活的。

2020-10-09 23:53:57 1934

原创 《Head First Java》20201008读书笔记

P246-P255《Head First Java》20201008读书笔记重载与默认的构造函数如果你已经写了一个有参数的构造函数,并且你需要一个没有参数的构造函数,则你必须自己动手写。如果类有一个以上的构造函数,则参数一定要不一样。重载构造函数的意思代表你有一个以上的构造函数,且参数都不相同。实例变量保存在所属的对象中,位于堆上。如果实例变量是个对对象的引用,则引用与对象都是在堆上。构造函数是个会在新建对象的时候执行程序代码。构造函数必须与类同名且没有返回类型。使用构造函数来初始被创

2020-10-08 21:22:11 57

原创 《Head First Java》20201007读书笔记

P235-P245《Head First Java》20201007读书笔记第9章 构造与垃圾收集器栈与堆:生存空间栈:方法调用和局部变量堆:所有的对象实例变量:实例变量是被声明在类而不是方法里面。局部变量:局部变量和方法的参数都是被声明在方法中。栈顶上方法是目前正在执行中的。实例变量是声明在类中方法之外的地方。局部变量声明在方法或方法的参数上。所有局部变量都存在于栈上相对应的堆栈块中。对象引用变量与primitive主数据类型变量都是放在栈上。不管是实例变量或局部变量,对象本身

2020-10-07 23:29:45 67

原创 《Head First Java》20201006读书笔记

P305-P314《Head First Java》20201006读书笔记运用Calendar对象字段会保存状态日期和时间可以运算日期与时间可以用millisecond来表示静态的import如果只会用到一两次,不如不用静态的import,这样程序会比较好阅读。如果会用到很多次,或许用static的import会让程序看起来比较清爽。在静态import的声明中也可以使用.*这样的通用字符。...

2020-10-06 22:08:33 69

原创 《Head First Java》20201005读书笔记

P293-P304《Head First Java》20201005读书笔记反过来将primitive主数据类型值转换成String有几种方法可以将数值转换成String,最简单的方法是将数字接上现有的String。double d = 42.5;String doubleString = "" + d;//“+”这个操作数是Java中唯一有重载过的运算符double d = 42.5;String doubleString = Double.toString(d);//Double这个类的

2020-10-05 23:51:11 65

原创 《Head First Java》20201004读书笔记

P286-P292Math的方法Math.ramdon()返回介于0.0~1.0之间的双精度浮点数。double r1 = Math.random();int r2 = (int)(Math.random() * 5);Math.abs()返回双精度浮点数类型参数的绝对值。这个方法有覆盖的版本,因此传入整型会返回整型,传入双精度浮点数会返回双精度浮点数会返回双精度浮点数。int x = Math.abs(-240);//返回240double d = Math.abs(240.45);

2020-10-04 23:51:06 46

原创 《Head First Java》20201003读书笔记

P281-P《Head First Java》20201003读书笔记静态变量的起始动作静态变量会在该类的任何静态方法执行之前就初始化。静态项目的初始化有两项保证:静态变量会在该类的任何对象创建之前就完成初始化。静态变量会在该类的任何静态方法执行之前就初始化。静态的final变量是常数一个被标记为final的变量代表它一旦被初始化之后就不会改动。也就是说,类被加载之后静态final变量就一直会维持原值。静态的方法应该用类的名称来调用,而不是用对象引用变量。静态的方法可以直接调用而不需

2020-10-03 23:58:43 91

原创 《Head First Java》20201002读书笔记

P273-P280《Head First Java》20201002读书笔记第10章 数字与静态Math方法:最接近全局的方法在Math这个类中的所有方法都不需要实例变量值。因为这些方法都是静态的,所以无需Math的实例。你会用到的只有它的类本身。例如Math这个类中的round()方法,它永远都执行相同的工作——取出浮点数(方法的参数)的最接近整数值。如果有10000个Math的实例,并且都执行round(42.2),所得的值永远都会是42。这个方法会对参数执行操作,但这操作不受实例变量状态的

2020-10-02 23:13:04 76

原创 《Head First Java》20201001读书笔记

P258-P265《Head First Java》20201001读书笔记对象的生命周期对象的生命周期要看引用变量的生命周期。public class TestLifeOne{ public void read(){ int a = 42;//s的范围只限于read()里面,到处无法使用 sleep(); } public void sleep(){ s = 7;//非法使用 }}局部变量只会存活在声明该变量的方法中public void read(){ int

2020-10-01 23:52:55 78

原创 《Head First Java》20200930读书笔记

P235-P256《Head First Java》20200930读书笔记栈与堆:生存空间在Java中,程序员会在乎内存中的两种区域:对象的生存空间堆(heap)和方法调用及变量的生存空间(stack)。当Java虚拟机启动时,它会从底层的操作系统取得一块内存,并以此区域来执行Java程序。至于有多少内存,并以及你是否能够调整它都要看Java虚拟机与平台的版本而定。我们知道所有的对象都存活于可垃圾回收的堆上,但我们还没看过变量的生存空间。而变量存在于哪一个空间要看它是哪一种变量而定。这里说

2020-09-30 23:01:33 78

原创 《Head First Java》20200929读书笔记

P253-P256《Head First Java》20200929读书笔记对象的生命周期如果你把父类想象成子类的父母,那就可以看出来谁是先存在的。父类的部分必须在子类创建完成之前就必须完整地成型。记住,子类对象可能需要动用到从父类继承下来的东西,所以那些东西必须要先完成。父类的构造函数必须在子类的构造函数之前结束。你会发现Hippo的构造函数是第一个被调用的(在堆栈上的第一个),却也是最后一个完成的!每个子类的构造函数会立即调用父类的构造函数,如此一路往上直到Object。等到Objec

2020-09-30 00:13:25 60

原创 《Head First Java》20200928读书笔记

**P249-P253**《Head First Java》20200928读书笔记构造函数小回顾构造函数是在新建类时会执行的程序。Duck d = new Duck();构造函数必须与类的名字一样,且没有返回类型。public Duck(int size){ }如果你没有写构造函数,则编译器会帮你写一个没有参数。public Duck(){ }一个类可以有很多个构造函数,但不能有相同的参数类型和顺序,这叫作重载过的构造函数。public Duck(){

2020-09-28 23:47:29 95

原创 《Head First Java》20200927读书笔记

P245-《Head First Java》20200927读书笔记Duck的简易饲养方法一定要有不需参数的构造函数。如果Duck的构造函数需要一项参数会怎样?上一页的Duck只有一个构造函数,且它需要一个int型的size参数。想象一个你可以让用户在创建Duck时有两个选项:一个可以指定Duck的大小(通过构造函数的参数),另外一个使用默认值而无需指定大小。你无法只依靠单一的构造函数就能够很清楚地达到这个目的。要记得,如果某个方法或构造有一项参数,你就必须在调用该方法或构造函数的时候传入适

2020-09-27 23:59:42 1323

原创 《Head First Java》20200926读书笔记

P242-《Head First Java》20200926读书笔记构造新的Duck构造Duck构造函数的一项关键特征,是它会在对象能够被赋值给引用之前就执行。这代表你可以有机会在对象被使用之前介入。也就是说,在任何人取得对象的遥控器前,对象有机会对构造过程给予协助。在Duck的构造函数中,我们没有作出什么有意义的事情,但还是有展示出事件的顺序。构造函数让你有机会可以介入new的过程public class Duck{ public Duck(){ System.out.printl

2020-09-26 23:55:54 60

原创 《Head First Java》20200925读书笔记

P239-《Head First Java》20200925读书笔记实例变量如果局部变量生存在栈上,那么实例变量呢?当你要新建一个CellPhone()时,Java必须在堆上帮CellPhone找一个位置。这会需要多少空间呢?足以存放该对象所有实例变量的空间。没错,实例变量存在于对象所属的堆空间上。记住对象的实例变量的值是存放于该对象中。如果实例变量全都是primitive主数据类型的,则Java会依据primitive主数据类型的大小为该实例变量留下空间。int需要32位,long需要

2020-09-25 23:33:14 76

原创 《Head First Java》20200924读书笔记

P237-P238《Head First Java》20200924读书笔记方法会被堆在一起当你调用一个方法时,该方法会放在调用栈的栈顶。实际被堆上栈的是堆栈块,它带有方法的状态,包括执行到哪一行程序以及所有的局部变量的值。栈顶上的方法是目前正在执行的方法(先假设只有一个)。方法会一直待在这里直到执行完毕,如果foo()方法调用bar()方法则,bar()方法会放在foo()方法的上面。punlic void doStuff(){ boolean b = true; go(4);}

2020-09-24 23:20:06 76

原创 《Head First Java》20200923读书笔记

P235-P237《Head First Java》20200923读书笔记第9章 构造器与垃圾收集器对象有生有死。编写Java程序,就必须创建对象,早晚要将它们释放掉,不然就会出现内存不足的问题。这一章会讨论对象如何创建,存在于何处以及如何让保存和抛弃更有效率。这代表我们会述及堆、栈、范围、构造器、超级构造器、空引用等。栈与堆:生存空间在Java中,程序员会在乎内存中的两种区域:对象的生存空间堆(heap)和方法调用及变量的生存空间(stack)。当Java虚拟机启动时,它会从底层的操作

2020-09-24 00:14:13 58

原创 《Head First Java》20200922读书笔记

P226-《Head First Java》20200922读书笔记不同继承树的类也可以实现相同的接口当你把一个类当作多态类型运用时,相同的类型必定来自同一个继承树,而且必须是该多态类型的子类。定义为Canine类型的参数可以接受Wolf与Dog,但无法忍受Cat或Hippo。但当你用接口来作为多态类型时,对象就可以来自任何地方了。唯一的条件就是该对象必须是来自有实现此接口的类。允许不同继承树的类实现共同的接口对Java API来说是非常重要的。如果你想要将对象的状态保存在文件中,只要去实

2020-09-22 23:12:26 58

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除