Java学习手册
分享Java学习过程中的知识点、程序题以及一些概念的思考
浩比浩比
这个作者很懒,什么都没留下…
展开
-
Java学习手册:Java基础知识点(不断扩充更新中)
1、Java中的程序代码可以分为结构定义语句和功能执行语句。2、Java程序中一句连续的字符串不能分开在两行书写。如果为了方便阅读,想将一个太长的字符串分在两行书写,可以先将这个字符串分为两个字符串,然后用加号(+)将这两个字符串连起来,在加号(+)处断行。System.out.println("这是第一个"+ "Java程序");3、文档注释:文档注释是以/*开头,并在注释内容末尾以...原创 2019-09-25 22:52:11 · 10328 阅读 · 0 评论 -
Java学习手册:BigInteger和BigDecimal
一、BigInteger(高精度整型)package com.haobi;import java.math.BigInteger;/* * BigInteger:可以让超过Integer范围内的数进行运算 */public class Test1 { public static void main(String[] args) { BigInteger b1 = new BigInteger("111111111111111111111111111111"); BigInteger原创 2020-08-09 23:04:41 · 197 阅读 · 0 评论 -
Java学习手册:Java并发与多线程面试问题
一、线程与进程进程是指一段正在执行的程序,是操作系统中运行的一个任务(一个应用程序运行在一个进程中)。而线程是程序执行的最小单元,有时也被称为轻量级进程。一个进程可以拥有多个线程,各个线程之间共享程序的内存空间(代码段、数据段和堆空间)以及一些进程级的资源(例如打开的文件),但是各个线程拥有自己的栈空间。进程是一块包含了某些资源的内存区域。操作系统利用进程把它的工作划分为一些功能单元。进程所包含...原创 2019-08-12 22:49:51 · 1012 阅读 · 0 评论 -
Java学习手册:Java IO面试问题
在Java语言中,输入和输出都被称为抽象的流,流可以看作一组有序的字节集合,即数据在两设备之间的传输。流的本质是数据传输,根据处理数据类型的不同,流可以分为两大类:字节流和字符流。字节流以字节(8bit)为单位,包含两个抽象类:InputStream(输入流)和OutputStream(输出流)。字符流以字符(16bit)为单位,根据码表映射字符,一次可以读多个字节,包含两个抽象类:Read...原创 2019-04-28 12:09:18 · 524 阅读 · 0 评论 -
Java学习手册:单例模式——写出一个线程安全的单例类
单例模式的实现方案:建立一个类,其构造方法都是私有的,只有一个getInstance()方法是public的,通过这个方法获取该类的唯一实例,即让类自身保存这个唯一的实例。(1)懒汉式,线程不安全public class Singleton { private static Singleton instance; private Singleton() {} public ...原创 2019-07-29 22:19:18 · 978 阅读 · 0 评论 -
Java学习手册:Java网络编程面试问题
Java学习手册:Java网络编程面试问题原创 2019-08-27 23:23:19 · 2044 阅读 · 0 评论 -
Java学习手册:Java面向对象面试问题
Java学习手册:Java面向对象面试问题原创 2019-07-11 13:37:47 · 726 阅读 · 0 评论 -
Java学习手册:日期操作
一、Date类java.util.Date类封装日期及时间信息setTime()//设置时间getTime(Long l)//获取时间//Date其他方法几乎设置为过时,不建议使用。二、SimpleDateFormatjava.text.SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的工具类。它允许进行格式化(日期→文本)、解析(文本→日期)和规范化。...原创 2019-04-25 15:07:14 · 848 阅读 · 0 评论 -
Java学习手册:正则表达式
正则表达式:就是使用一系列预定义的特殊字符来描述一个字符串的格式规则,然后使用该格式规则匹配某个字符串是否符合格式要求。表达式意义String正则API:(1)matches方法:boolean matches(String regex)//使用给定的正则表达式来匹配当前字符串是否满足格式要求,满足返回true,不满足返回false。(2)split方法:Strin...原创 2019-04-23 09:37:18 · 408 阅读 · 0 评论 -
Java学习手册:Java中复制数组的方法
1、System.arraycopy方法用于数组复制public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)//src——源数组//srcPos——源数组中起始位置//dest——目标数组//destPos——目标数组中的起始位置//length——要复制的数组元...原创 2019-04-21 14:36:03 · 273 阅读 · 0 评论 -
Java学习手册:String&StringBuffer&StringBuilder&StringTokenizer
Java语言有4个类可以对字符或字符串进行操作,它们分别是Character、String、StringBuffer和StringTokenizer,其中Character用于单个字符操作,String用于字符串操作,属于不可变类,而StringBuffer也是用于字符串操作,不同之处是StringBuffer属于可变类。String是不可变类,也就是说,String对象一旦被创建,其值将不能被...原创 2019-04-21 14:12:13 · 352 阅读 · 0 评论 -
Java学习手册:实例化String对象
实例化String对象的方法:——直接赋值(多)——使用关键字new注:使用new关键字实例化时,会开辟两个内存空间,其中一个是无用的。如下图所示:java.lang.string使用了final修饰,不能被继承。(String是不可变对象:字符串创建后,内容不可改变)字符串底层封装了字符数组及针对字符数组的操作算法。字符串一旦创建,对象永远无法改变,但字符串引用可以重新赋值。Java字...原创 2019-04-21 12:39:51 · 412 阅读 · 0 评论 -
Java学习手册:finally块中的代码什么时候被执行?
在Java语言的异常处理中,finally块的作用就是为了保证无论出现什么情况,finally块里的代码一定被执行。由于程序执行return就意味着结束对当前函数的调用并跳出这个函数体,因此任何语句要执行都只能在return前执行(除非碰到exit函数),因此finally块中的代码也是在return前执行的。此外,如果try-finally或者catch-finally中都有return,那么f...原创 2019-04-20 20:54:13 · 593 阅读 · 0 评论 -
Java学习手册:final&finally&finalize
final、finally和finalize的区别如下:(1)final用于声明属性、方法和类,分别表示属性不可变、方法不可覆盖和类不可被继承(不能派生出新的子类)。final属性:被final修饰的变量不可变。由于不可变有两重含义:一是引用不可变;二是对象不可变。而final指的是引用的不可变性,即它只能指向初始时指向的那个对象,而不关系指向对象内容的变化。所以,被final修饰的变量必须被...原创 2019-04-20 16:34:56 · 255 阅读 · 0 评论 -
Java学习手册:assert
断言(assert)作为一种软件调试的方法,提供了一种在代码中进行正确性检查的机制。它的主要作用是对一个boolean表达式进行检查,一个正确运行的程序必须保证这个boolean表达式的值为true,若boolean表达式的值为false,则说明程序已经处于一种不正确的状态下,需要系统提供警告信息并且退出程序。在实际的开发中,assert主要用于保证程序的正确性,通常在程序开发和测试时使用。为了提...原创 2019-04-20 16:27:34 · 275 阅读 · 0 评论 -
Java学习手册:instanceof
instanceof是Java语言中一个二元运算符,它的作用是判断一个引用类型的变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例,即它左边的对象是否是它右边的类的实例,该运算符返回boolean类型的数据。常见的用法为:result=object instanceof class。如果object是class的一个实例,那么instanceof运算符返回true;如果object不是c...原创 2019-04-20 16:21:29 · 288 阅读 · 0 评论 -
Java学习手册:strictfp
关键字strictfp是strict float point的缩写,指的是精确浮点,它用来确保浮点数运算的准确性。JVM在执行浮点数运算时,如果没有指定strictfp关键字,此时计算结果可能会不精确,而一旦使用了strictfp来声明一个类、接口或方法,那么在所声明的范围内,Java编译器以及运行环境会完全依照IEEE二进制浮点算术标准(IEEE 754)来执行,在这个关键字声明的范围内所有浮点...原创 2019-04-20 16:20:02 · 493 阅读 · 0 评论 -
Java学习手册:this&super
在Java语言中,this用来指向当前实例对象,它的一个非常重要的作用就是用来区分对象的成员变量与方法的形参(当一个方法的形参与成员变量的名字相同时,就会覆盖成员变量)。示例如下:class People{ String name; //正确的写法 public People(String name){ this.name = name; } //错误的写法 public Peo...原创 2019-04-15 16:35:30 · 320 阅读 · 0 评论 -
Java学习手册:数组的初始化方式
在Java语言中,一维数组的声明方式为:type arrayName[] 或 type[] arrayName其中,type既可以是基本的数据类型,也可以是类,arrayName表示数组的名字,[]用来表示这个变量的类型为一维数组。与C/C++语言不同的是,在Java语言中,数组被创建后会根据数组存放的数据类型初始化成对应的初始值(例如,int类型会初始化为0,对象会初始化为null)。另外...原创 2019-04-12 21:14:06 · 282 阅读 · 0 评论 -
Java学习手册:如何获取父类的类名?
Java语言提供了获取类名的方法:getClass().getName()。代码如下所示:原创 2019-04-12 20:38:54 · 1467 阅读 · 0 评论 -
Java学习手册:length属性&lengh()方法
在C/C++语言中,每当调用一个方法需要传递数组时,就必须同时传递数组的长度,因为在方法调用时传递的参数为数组的首地址,而对数组的实际长度却无法获取,这样会导致在对数组进行访问时可能产生越界。在Java语言中,数组提供了length属性来获取数组的长度。在Java语言中,length()方法是针对字符串而言的,String提供了length()方法来计算字符串的长度。package com....原创 2019-04-12 17:17:56 · 552 阅读 · 0 评论 -
Java学习手册:Java中数组是不是对象
答案:是。数组是指具有相同类型的数据的集合,它们一般具有固定的长度,并且在内存中占据连续的空间。在C/C++语言中,数组名只是一个指针,这个指针指向了数组的首元素,既没有属性也没有方法可以调用,而在Java语言中,数组不仅有自己的属性(例如length属性),也有一些方法可以调用(例如clone方法)。由于对象的特点是封装了一些数据,同时提供了一些属性和方法,从这个角度来讲,数组是对象。每个数组...原创 2019-04-12 17:14:21 · 441 阅读 · 0 评论 -
Java学习手册:无符号左移&无符号右移&有符号右移
一、无符号右移“>>”与有符号右移“>>>”Java提供了两种右移运算符:“>>”和">>>"。其中,“>>”被称为有符号右移运算符,“>>>”被称为无符号右移运算符,它们的功能是将参与运算的对象对应的二进制数右移指定的位数。二者的不同点在于“>>”在执行右移操作时,若参与运算的数字为正数,则在...原创 2019-04-12 17:08:27 · 8768 阅读 · 7 评论 -
Java学习手册:break&continue&return
break、continue以及return的区别如下:(1)break用于直接强行跳出当前循环,不再执行剩余代码。当循环中遇到了break语句时,忽略循环体中任何其他语句和循环条件测试,程序控制在循环体后面的语句重新开始。所以,当多层循环嵌套,并且break语句出现在嵌套循环中的内层循环时,它将仅仅只是终止了内层循环的执行,而不影响外层循环的执行。(2)(3)...原创 2019-04-12 16:59:56 · 332 阅读 · 0 评论 -
Java学习手册:长路逻辑&短路逻辑
一、短路逻辑(1)短路与(&&)运算对于“&&”,当第一个操作数为false时,将不会判断第2个操作数,因为无论第二个操作数是什么,最后的运算结果一定是false。(2)短路或(||)运算对于“||”,当第一个操作数为true时,将不会判断第二个操作数,因为无论第二个操作数是什么,最后的运算结果一定是true。备注:通过第一个操作数就能知道结果,则短路&...原创 2019-04-11 11:24:46 · 444 阅读 · 0 评论 -
Java学习手册:运算符优先级
运算符的优先级优先级运算符1. () []2+(正) -(负) ++ – ~ !3* / %4+(加) -(减)5<< >> (无符号右移) >>>(有符号右移)6< <= > >= instanc...原创 2019-04-11 10:51:43 · 268 阅读 · 0 评论 -
Java学习手册:Java程序初始化的顺序
一、Java程序初始化执行顺序⬇1、父类(父类静态变量→父类静态代码块)⬇2、子类(子类静态变量→子类静态代码块)⬇3、父类(父类非静态变量→父类非静态代码块→父类构造函数)⬇4、子类(子类非静态变量→子类非静态代码块→子类构造函数)合在一起如下(执行顺序由高到低):父类静态变量→父类静态代码块→子类静态变量→子类静态代码块→父类非静态变量→父类非静态代码块→父类构造函数→子类非静态变...原创 2019-03-18 21:14:37 · 285 阅读 · 0 评论 -
Java学习手册:Java基本类型转换
一、转换规则原操作数的类型转换后操作数的类型bytecharcharbyte shortshortbyte charintbyte short charlongbyte short char intfloatbyte short char int longdoublebyte short char int long float...原创 2019-04-10 21:46:48 · 306 阅读 · 0 评论 -
Java学习手册:static
static关键字主要有两种作用:第一,为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关。第二,实现某个方法或属性与类而不是对象关联在一起,也就是说,在不创建对象的情况下就可以通过类来直接调用方法或使用类的属性。具体而言,在Java语言中,static主要有4种使用情况:成员变量、成员方法、代码块和内部类。(1)static成员变量虽然Java语言中没有全局的概念,但可以通过s...原创 2019-04-18 17:39:37 · 286 阅读 · 0 评论 -
Java学习手册:Java是否支持多继承?为什么?
答案:不支持。(准确的说是:在Java中,类只支持单继承,而接口可以实现多继承。)James Gosling在1995年2月发表了一篇名为”Java概览”的Java白皮书,文章解释了Java不支持多重继承的原因。Java去除了一些C++中很少用、而且被经常误解而错用的功能,如操作符的重载(operator overloading)(尽管Java仍旧保留方法的重载),多重继承(multiple ...原创 2019-03-15 00:13:33 · 2010 阅读 · 0 评论 -
Java学习手册:clone方法(浅复制&深复制)
在实际编程中,经常会遇到从某个已有的对象A创建出另外一个与A具有相同状态的对象B,并且对B的修改不会影响到A的状态。在Java语言中,仅仅通过简单的赋值操作显然无法达到这个目的,而Java提供了一个简单有效的clone()方法来满足这个需求。Java中的所有类默认都继承自Object类,而Object类中提供了一个clone()方法。这个方法的作用是返回一个Object对象的复制。这个复制返回的...原创 2019-04-20 16:48:39 · 518 阅读 · 0 评论 -
Java学习手册:向上造型
向上造型:①父类型的引用指向子类的对象②能点出来什么看类型(与对象无关),即引用的类型Animal a1 = new Animal();//父类Tiger a2 = new Tiger();//子类Animal a3 = new Tiger();//向上造型(1)一个子类的对象可以向上造型为父类的类型,即定义父类型的引用可以指向子类对象。(2)父类的引用可以指向子类的对象,但通过父...原创 2019-04-17 10:44:53 · 371 阅读 · 0 评论 -
Java学习手册:不可变类
不可变类(immutable class)是指当创建了这个类的实例后,就不允许修改它的值了,也就是说,一个对象一旦被创建出来,在其整个生命周期中,它的成员变量就不能被修改了。它有点类似于常量(const),即只允许别的程序读,不允许别的程序进行修改。在Java类库中,所有基本类型的包装类都是不可变类,例如Integer、Float等。此外,String也是不可变类。要创建一个不可变类需要遵循下...原创 2019-04-20 16:38:34 · 355 阅读 · 0 评论 -
Java学习手册:内部类
在Java语言中,可以把一个类定义到另外一个类的内部,在类里面的这个类就叫做内部类,外面的类叫做外部类。在这种情况下,这个内部类可以被看成是外部类的一个成员(与类的属性和方法类似)。与之不同的好有一种类被成为顶层类(top-level),指的是类定义代码不嵌套在其他类定义中的类。需要注意的是嵌套类(Nested Class)与内部类(Inner Class)类似,只是嵌套类是C++的说法,而内部...原创 2019-04-20 12:45:21 · 251 阅读 · 0 评论 -
Java学习手册:抽象类&接口
如果一个类中包含抽象方法,那么这个类就是抽象类。在Java语言中,可以通过把类或者类中的某些方法声明为abstract(abstract只能用来修饰类或者方法,不能用来修饰属性)来表示一个类是抽象的。接口就是指一个方法的集合,接口中的所有方法都没有方法体,在Java语言中,接口是通过关键字interface来实现的。只要包含一个抽象方法的类就必须被声明为抽象类,抽象类可以声明方法的存在而不去实现...原创 2019-04-19 10:03:45 · 286 阅读 · 0 评论 -
Java学习手册:多态的实现机制(重载和覆盖)
一、多态的实现机制多态是面向对象程序设计中代码重用的一个重要机制,它表示当同一个操作作用在不同对象时,会有不同的语义,从而会产生不同的结果。在Java中,多态主要有以下两种表现方式:(1)方法的重载(overload)重载是指同一个类中有多个同名的方法,但这些方法有着不同的参数,因此在编译时就可以确定到底调用哪个方法,它是一种编译时多态。重载可以被看做一个类中的方法多态性。(2)方法的覆盖...原创 2019-04-18 16:14:41 · 1097 阅读 · 0 评论 -
Java学习手册:组合&继承
一、继承继承是面向对象中的一个非常重要的特性。通过继承,子类可以使用父类的一些成员变量与方法,从而能够提高代码的复用性,提高开发率。在Java语言中,被继承的类叫基类(superclass)或父类,继承基类或父类的类叫派生类或子类(subclass)。继承是通过extends关键字来实现的,使用格式为:class 子类名extends父类名。继承主要有以下几个特征:(1)Java语言不支持多...原创 2019-04-17 10:00:26 · 321 阅读 · 0 评论 -
Java学习手册:泛型
一、泛型泛型,JDK1.5后推出的新特性,参数化类型可以允许在使用时指定类型。泛型可以解决数据类型的安全性问题,它的主要原理是:在类声明的时候通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。(1)泛型可以修饰属性、方法参数以及返回值类型。(2)集合中也使用了泛型,用来约束存入集合的元素类型。(3)迭代器也支持泛型,用来指定其遍历的集合的元素类型。迭代器的泛型与集合指定的...原创 2019-04-25 20:31:12 · 366 阅读 · 0 评论 -
Java学习手册:HashMap&HashTable&TreeMap&WeakHashMap
Java为数据结构中的映射定义了一个接口java.util.Map,它包括3个实现类:HashMap、Hashtable和TreeMap。Map是用来存储键值对的数据结构,在数组中通过数组下标来对其内容索引的,而在Map中,则是通过对象来进行索引的,用来索引的对象叫做key,其对应的对象叫做value。HashMap是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它...原创 2019-04-25 20:50:10 · 404 阅读 · 0 评论 -
Java学习手册:“==”&equals&hashCode
(1)“= =”运算符用来比较两个变量的值是否相等。也就是说,该运算符用于比较变量对应的内存中所存储的数值是否相等,要比较两个基本类型的数据或两个引用变量是否相等,只能使用“= =”运算符。具体而言,如果两个变量是基本数据类型,可以直接使用“= =”运算符来比较其对应的值是否相等。如果一个变量指向的数据是对象(引用类型),那么,此时涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内...原创 2019-04-20 17:33:29 · 346 阅读 · 0 评论