
Java学习笔记
文章平均质量分 59
村口卖西瓜
欢迎朋友们一起交流
展开
-
Java学习笔记71. 操作线程 -- 取得和设置线程的名称
人有名字,线程也有;人有重名的,线程也可以重名。人的名字可以出生前起,也可以出生后起,线程也一样。人可以改名,线程也可以改名。得到线程名字的方法是getName(),设置线程名字的方法是setName()。下面的程序使用了getName方法得到线程的名字public class demoSetName extends Thread{ //定义一个线程类 public void run...原创 2018-03-09 14:16:16 · 173 阅读 · 0 评论 -
Java学习笔记44. 使用对象作为方法的返回值
既然可以使用对象作为方法的参数,也可以在方法执行完毕后返回一个对象给被调用者。class Object{ int i; Object(int a){ //类Object的构造方法 i = a; } Object returnObj(){ //返回值为Object类型的方法returnObj(),这个方法会返回一个对象obj Object obj = new Object...原创 2018-03-03 23:05:14 · 4168 阅读 · 1 评论 -
Java学习笔记45. 初学Java内部类
在类的内部存在的类叫做内部类,内部类是嵌套类的一种。具体可以分为以下4种:静态内部类:使用static关键字修饰的类成员内部类:不使用static关键字修饰的类方法内部类:在方法内部存在的内,它的作用域只在方法内部匿名内部类:涉及接口和抽象类,暂时不讨论静态内部类当开发者不想通过使用外部类的对象访问内部类,而是直接访问时,可以声明内部类为static类型。静态内部类可以访问外部类的静态成员,但是不...原创 2018-03-03 23:41:52 · 219 阅读 · 0 评论 -
Java学习笔记74. Java线程的优先级
不同的线程就像是不同的工作小分队,而系统的计算资源就像是工作场所,工作场所一次只能让一个线程来工作,与此同时,其它的线程就需要等待。但是不同的小分队的重要程度不同,就应该分别看待,这就是优先级的设定。Java用setPriority方法来给线程设置优先级, 数字1~10分别代码10个不同的优先级,1的优先级最小,10的优先级最高,如果不设定优先级,则默认的优先级为5。Java还用3个常量分别代表高...原创 2018-03-11 15:10:04 · 169 阅读 · 0 评论 -
Java学习笔记75. 线程的睡眠方法
人在工作的时候,不会24小时一直工作,会有休息的时间,也会有吃饭的时间,这就是工作中间的间隔。线程也一样,有时候也需要间隔一点时间,再做下一个动作。这就是sleep方法的作用了,如下:class testSleep extends Thread{ //线程类testSleep public void run(){ //线程类的run方法,输出1到8的数字 ...原创 2018-03-11 15:33:50 · 143 阅读 · 0 评论 -
Java学习笔记76. 线程的让步方法--yield
yield是屈服和放弃的意思。在Java中,它引申使用,意思是让步给后面的线程,它重新排队,处于就绪状态。yield方法不会产生任何异常,它的使用方法如下:class demoThread extends Thread{ //线程类demoThread public void run(){ //覆盖run方法 for(int i=1;i<10;i+...原创 2018-03-11 16:05:55 · 345 阅读 · 0 评论 -
Java学习笔记77. 线程的等待方法 —— join( )
对于一个已经在运行的线程,可以使用join方法使其对CPU进行独占,一直到运行完这个线程后,再运行其它的线程。现在先来总结一下join的无参方法:class demojoin extends Thread{ //线程类 public void run(){ //线程的run方法 for(int i=1;i<8;i++) //输出数字1...原创 2018-03-11 16:25:00 · 172 阅读 · 0 评论 -
Java学习笔记78. 线程的中断入门 —— interrupt方法
关于线程的中断的知识点比较多,这里暂时浅尝辄止,只使用interrupt方法做一个例子,显示中断方法的使用。例子如下:public class testInterrupt extends Thread{ //线程类testInterrupt,用来测试中断的方法 private boolean blockflag = false; //设置一个旗标,控制循环的退出...原创 2018-03-11 17:28:57 · 163 阅读 · 0 评论 -
Java学习笔记16. 常量与变量
常量与变量是任何一门编程语言的ABC。常量常量就是值固定不变的量,一旦定义,值不再改变。常量可以为整型、浮点型、字符型和字符串型。常量的定义方式 : final 数据类型 常量标识符 = 值 ;* 常量必须赋值, 否则编译会出错示例如下:public class demoFinal{ static final int df = 10; public static void main(Strin...原创 2018-02-25 11:14:26 · 217 阅读 · 0 评论 -
Java学习笔记47. 子类中对父类方法的覆盖
如果子类中的方法与父类中的方法同名,且参数类型,参数个数,参数位置与父类完全一致时。这个时候,就说子类的方法完全覆盖了父类中的方法。比如:class Father{ void sing(int i){ //父类的方法 System.out.println("I can sing "+i+" songs!"); }}class Son extends Father{ void s...原创 2018-03-04 16:56:23 · 905 阅读 · 0 评论 -
Java学习笔记43. 使用对象作为方法的参数
使用变量作为方法的参数比较寻常,但是使用对象作为方法的参数也是可以的。对象本身是一个集合体。把对象作为参数传入方法,就是要在方法中使用对象的成员字段或者成员方法。class object{ int a,b; object(int i,int j){ a = i; b = j; } boolean equals(object o){ //o是形式参数,代表传入的实际参数o2和o...原创 2018-03-03 22:11:39 · 889 阅读 · 0 评论 -
Java学习笔记42. 类的对象字段的访问
对类的对象字段进行访问,实质就是访问对象的方法和字段。对于静态方法和静态字段,不需要创建对象就可以直接使用; 对于非静态方法和非静态字段,则需要先创建实例,通过实例进行访问。class test1{ int a; static int b; char c = 'c'; static void sayHello(){ System.out.println("Hello!"); }}...原创 2018-03-03 21:32:42 · 317 阅读 · 0 评论 -
Java学习笔记41. 把对象作为类的成员字段使用
类的成员字段可以是变量,可以是常量,也可以是对象。把对象作为类的成员字段也是一种常用的方法。先写一个测试类——test1public class test1{ test1(){ System.out.println("class test1 is running"); //test1()的构造方法里有输出语句 }}再写一个展示类——demoClassAsField, 展示类中把...原创 2018-03-03 17:36:41 · 1135 阅读 · 0 评论 -
Java学习笔记72. 操作线程 -- 判断线程是否启动
isAlive( ) 方法是用来判断线程是否启动的方法。它的返回值是布尔型,启动为true,没启动为false。下面的代码说明了isAlive的使用方法:public class demoisAlive extends Thread{ //创建线程类 public void run(){ //覆盖线程类的run方法 for(int i=1;i<6;...原创 2018-03-09 14:44:53 · 5302 阅读 · 0 评论 -
Java学习笔记15. 形式参数与实际参数
Java中的方法可以分为:有参方法和无参方法。使用带参数的方法时,方法的参数可以是一个到多个。参数可以分为形式参数和实际参数。在实际调用方法的时候使用的参数就是实际参数,而在被调用时才临时分配内存的参数是形式参数。 可以这么理解,方法在被调用前只是一个蓝图。只有在被调用的时候才把这个蓝图变成一个在内存中存在的方法,供调用者使...原创 2018-02-22 13:18:02 · 3720 阅读 · 0 评论 -
Java学习笔记73. 后台线程与setDaemon( )方法
Daemon是魔鬼的意思。魔鬼是很可怕的,也是很有力量的。这与后台进程有异曲同工之妙。只要进程有一个前台线程在运行,这个进程就不会结束;但是如果一个进程只有后台线程在工作,那么这个进程就结束了。后台线程:如果一个线程在启动前设置为后台线程,则这个线程就是后台线程。设置方法就是setDaemon方法。如下例:Thread t = new Thread();t.setDaemon(true); ...原创 2018-03-09 17:21:46 · 518 阅读 · 0 评论 -
Java学习笔记36. Java中的字符串
字符串的本质是字符的数组。在Java中,一个字符串是以对象的方式来处理的。String字符串的声明String 字符串名;eg. String str;创建字符串字符串的声明只是声明了一个指向字符串的变量,还并没有创建字符串。创建字符串有两种方法:第一种方法是直接使用字符串常量来创建字符串,如:String str = "Hello World!";第二种创建字符串变量的方法是使用new关键字S...原创 2018-03-01 22:43:08 · 156 阅读 · 0 评论 -
Java学习笔记93. 映射 Map
映射 Map 是一种双列的集合。它由Key 关键字, 和Value值,组成。给出一个关键字,就能访问到值。它们是一一对应的。这与数学上的映射的意义是一样的。下面用1个例子说明一下Map接口的简单用法Hash 哈希,代表哈希值,它的特点就是不保证元素的顺序。import java.util.*;public class demoHashMap{ public static void mai...原创 2018-03-15 22:00:12 · 274 阅读 · 0 评论 -
Java学习笔记37. 字符串类(String)的比较方法
Java类的系统方法多如牛毛,用到的时候再查就可以了。这里就练习几个常用的方法。String类的比较有3个常用的方法:1. compareTo方法:拿对象字符串与参数字符串进行ASCII码的比较,只比较第1个不相同的字符的ASII码的差值。 也就是,对象字符串的字符ASCII码 - 参数字符串的字符的ASCII码 要注意的是,这里所比较的字符是两个字符串中第一个相异的字符。比如"ab...原创 2018-03-01 23:02:27 · 456 阅读 · 0 评论 -
Java学习笔记38. 字符串的几个常用方法
今天来总结几个字符串的常用方法:1. length( ) 方法:用来返回字符串的长度2. indexOf( ) 方法: 用来返回参数字符串在对象字符串中首次出现的位置; 如果找到则返回字符串下标,找不到则返回 -1。3. substring(startIndex, endIndex ) 方法:用来取子字符串, endIndex可以省略4. replace("toBeReplaced","toRep...原创 2018-03-02 14:40:40 · 170 阅读 · 0 评论 -
Java学习笔记39. StringBuffer 类的声明与创建
String对象一旦建立,就不能在堆内存中更改。重新赋值只能改变变量名的指向,比如:String str = "abc"; //堆内存中开辟空间,存入abcstr = “def”; //另开辟空间存入def,并改变str的指向,原先内存中的abc并没有消失当指向字符串的变量更改指向之后,原先的字符串在内存中就成了“垃圾”,就会有垃圾回收机制,定期地回收内存。但是,如果需要对字符串变量频繁的操作,...原创 2018-03-03 14:01:06 · 2259 阅读 · 0 评论 -
Java学习笔记40. StringBuffer类的几个常用操作方法
今天总结几个StringBuffer类的常用操作方法:Append( ) 方法:可以添加任何类型的数据在指定字符串末尾deleteCharAt( ) 方法:删除指定位置的字符setCharAt( ) 方法:替换指定位置的字符insert ( ) 方法:在指定位置中插入指定内容public class demoStringBuffer{ public static void main(String...原创 2018-03-03 15:57:58 · 276 阅读 · 0 评论 -
Java学习笔记48. 小感想——工具的发明与改进
学了1个多月Java了,感觉进步比较慢。也没有办法,逐渐深入吧。所有的编程语言,说到底都只是工具而已。而工具的发展方向从来都是从难到易,从复杂到简单。从简陋低级到高级。如果说很早以前的软件工程师是一个很难的职业的话。如今的分割化的软件工程师领域则已经变得相当容易学习了。大概在10年前,我就对编程很感兴趣。但是10年前的学习编程的资源和便利性远远不及今天。在今天,随便就能找到一套很完整和细致的jav...原创 2018-03-04 20:07:07 · 218 阅读 · 0 评论 -
Java学习笔记46. 继承与访问权限修饰符
继承面向对象的编程,其优点之一就是可以进行高效的代码重用。代码重用的途径就是类的继承。被继承的类称为父类,继承的类称为子类。继承的语法是:class fatherClass{ //父类}class sonClass extends fatherClass{ //使用extends关键字继承父类}Java中的继承是单继承,即一个子类只能有一个父类,但子类还可以有子类。子类也可以有自...原创 2018-03-04 16:28:07 · 306 阅读 · 0 评论 -
Java学习笔记53. Java中的抽象类
关于抽象类,我的理解是:抽象类是图纸的图纸。我们盖房子,需要有房子的图纸,盖的时候就按照图纸的要求一砖一瓦地建造。但是在Java里有一个特别的发明——抽象类。抽象类可以说是图纸的图纸。因为抽象类并没有指明,类中的方法怎么实现。它只是在图纸上注明了——需要一个地基,需要一个烟囱,需要一个院子,等等。可以说,它只是一份清单,列明了要去做什么。但是怎么做,则需要非抽象类去一个个地实现它。抽象类中也可以有...原创 2018-03-05 14:20:17 · 132 阅读 · 0 评论 -
Java学习笔记54. 子类对父类构造方法的隐式调用
子类在继承父类的构造方法时,默认会隐式调用。即在编译时默认加入:子类构造方法名(){ super(); //super关键字调用父类的构造方法}这个特性决定了,如果父类里显示地声明了构造方法,并附有参数列表的话,子类必须对其进行显式的调用,否则子类会因为找不到相应的父类的构造方法而出错。这个规则对于一般类适用,对于抽象类也适用。编程举例如下:class test{ /...原创 2018-03-05 15:05:07 · 742 阅读 · 0 评论 -
Java学习笔记55. 什么样的方法不可以被声明为抽象方法?
抽象方法的概念很容易理解,但是如果跟其它的概念混一混,就需要动点脑筋。比如说final类型的方法,不能被声明为抽象方法。为什么呢?因为final的值不可以改变,而抽象是需要实现的,这在定义上就冲突了,所以final与抽象不相容。比如说static的方法,不能被声明为抽象方法。为什么呢?因为静态的东西一开始就在内存中存在,是类似与实体房子一样的东西,而abstract描述的是图纸的图纸,两者根本不搭...原创 2018-03-05 15:14:02 · 1139 阅读 · 1 评论 -
Java学习笔记56. 接口的基本概念与使用
接口interface在抽象上比抽象类更进了一步。抽象类还允许存在一般方法,接口里面只允许存在抽象方法。除了抽象方法之外,抽象类中还有常量。接口的定义方法是:interface 接口名{ (final) 数据类型 成员名称 = 常量; abstract 返回值的数据类型 方法名称(参数);}其中,不论数据类型前面是否加final关键字,系统都会默认给加上 public stati...原创 2018-03-05 22:26:20 · 145 阅读 · 0 评论 -
Java学习笔记57. 再谈接口,兼论匿名内部类
前面我在总结内部类时,没有总结匿名内部类。原因是匿名内部类的使用与抽象类和接口是结合在一起的。在总结完了抽象类和接口之后,再来总结匿名内部类比较恰当。再对接口说两句。接口不是类,它只是功能的描述。我们知道,Java中不能实现多重继承,一个子类只能有一个父类。如果子类想实现一些父类所没有的功能,就可以使用接口来实现(implement)。格式为:class A extends B implement...原创 2018-03-05 23:28:59 · 138 阅读 · 0 评论 -
Java学习笔记58. 包的概念与使用
在实际开发中,包package是一个经常使用的机制。Java中的类很多,可以说非常庞大。要把Java中的类有机地组织起来,便于引入和使用,就要善于分类。而Java给出了package的机制以解决问题。Java程序的基本单位是类和接口。类和接口以包package为单位,组织在一起,形成一个整体。同时,为了避免潜在的命名冲突,不同包之间的类是可以重名的。因为实际在Java程序中,对于类的引用是以包名加...原创 2018-03-06 15:36:04 · 167 阅读 · 0 评论 -
Java学习笔记59. Java中的异常
什么叫做异常呢?异常就是在程序运行中发生的,会导致程序运行中断的,非正常事件。首先,它是非正常的,所以叫做异常。其次,它是在程序运行过程中发生的。最后,它会导致程序的运行中断。这3点构成了异常的定义。既然异常会导致程序运行中断,那么就必须设计一套机制以处理异常,从而保证程序的顺利运行。现实生活中,异常是经常会有的事情。比如说,出外游玩,忽然下雨了; 去买东西,发现钱不够;领导安排小李去办事,结果小...原创 2018-03-06 17:18:47 · 137 阅读 · 0 评论 -
Java学习笔记60. Java的异常处理机制
当程序出现异常时,一个异常对象就产生了。按照异常对象产生的来源,可以把异常分为系统异常和用户异常,即用户用throw语句产生的异常。当程序中出现异常时,如果用户自己没有定义处理异常的语句,那么系统就会默认地先抛出这个异常,再终止程序的运行。如下例:public class demoException{ public static void main(String[] args){ int[]...原创 2018-03-06 17:29:45 · 124 阅读 · 0 评论 -
Java学习笔记61. 程序抛出的异常Exception
Java中的部分异常是由异常类在系统中事先定义好的,称为标准异常类。异常类由throwable异常类派生而来。throwable异常类有两个直接子类:Exception和ErrorError是与硬件相关的异常类,由系统自动处理,不需要开发者处理。Exception是程序中的异常,它也有两种情况:运行时异常和检查时异常。顾名思义,运行时异常是编译没问题,但是在运行时发生的异常; 而检查时异常是在编译...原创 2018-03-06 18:03:33 · 337 阅读 · 0 评论 -
Java学习笔记84. Java的集合框架
集合是什么?集合就是变量的组合,把许多变量组合在一起。有的人可能会想到,数组也是变量的组合呀。既然有了数组,为什么还要有集合呢?首先,与数组不同的是,集合是引用变量的组合,也就是说,它所存储和处理的是对象的引用。其次,数组一旦定义,它的长度就是固定的,不能改变。而集合可以动态地增减元素,对内存的利用更加有效。集合的框架集合中所包含的内容很多,很庞大,所以才说是集合框架。其中关键的集合有两种:一种是...原创 2018-03-12 14:37:14 · 168 阅读 · 0 评论 -
Java学习笔记52. Java中的多态
从根本上来说,多态是一个哲学的概念。它的本质就是多样化。多样化的目的是满足多样的需求。而多样的需求多态的实现有3种方法:1. 子类中对父类的方法实现覆盖2. 子类中对父类的方法实现重载3. 由多种子类实现对同一父类的引用, 即将子类的对象作为父类的对象实现多态下面编程举例说明:class person{ //父类person int age; String n...原创 2018-03-04 22:42:54 · 155 阅读 · 0 评论 -
Java学习笔记51. 多层继承
Java中不允许多重继承,但是可以多层继承。即Java中的子类只能有一个父类,但是父类还是可以有自己的父类的。下面举例说明:class A{ //B的父类 int height; }class B extends A{ //C的父类,A的子类 int width;}class C extends B{ //B的子类 int length; int g...原创 2018-03-04 22:39:48 · 1537 阅读 · 3 评论 -
Java学习笔记79. 多线程的同步机制 -- synchronized 关键字
当系统中存在多个线程,而多个线程所操作的都是同一块内存区域,那么,就有可能产生相互干扰的情况。比如下面的情况:class threaddemo implements Runnable{ //实现了Runnable接口的类 private int n = 0; //私有全局变量 public void run(){ //覆盖run方法 test();...原创 2018-03-11 19:02:07 · 157 阅读 · 0 评论 -
Java学习笔记80. 关于死锁
死锁,本质上是一个哲学问题。当一个线程先占有了同步类(synchronized)的资源A,同时接着要求同步类的资源B。而恰恰在这中间,另一个线程捷足先登,占有了同步类的资源B,同时接着要求资源A。而此时资源A已经被第一个线程占有了。于是,这两个线程的代码都执行不下去了,它们都在等对方释放资源,好继续往下执行,这时候,程序就形成了“死锁”的状态。所谓同步类的资源,就是被synchronized关键字...原创 2018-03-11 20:36:06 · 154 阅读 · 0 评论 -
Java学习笔记81. 线程间的通信 —— wait( ),notify( ),和 notifyAll( )
线程之间是可以通信的,线程间通信的方法有wait,notify和notifyAll。这3个方法是定义在Object类里面的,一切类和对象都天然地可以使用者3个方法。但是使用这些方法的前提是在synchronized修饰的语句块下。wait的意义是中止当前线程,释放锁,并等待;notify的意义是结束第一个开始等待中的线程,使其处于就绪状态,但是不释放锁。notifyAll的意义是结束所有正在等待中...原创 2018-03-11 21:50:58 · 191 阅读 · 1 评论 -
Java学习笔记17. 静态方法和非静态方法
与字段相似,方法也可以分为静态和非静态。静态方法可以访问静态字段,也可以访问静态方法。但是静态方法不能直接访问非静态方法,必须通过对象的实例进行访问。相反,非静态方法在访问时没有限制,既可以访问静态的,也可以访问非静态的。其实,只要想想原理就能明白。对象直接要进行互动就必须先具备形体,而创建对象,或者使用静态修饰符修饰,就是创建形体。举个例子:public class demoStaticMeth...原创 2018-02-25 14:15:25 · 217 阅读 · 0 评论