![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java之路
文章平均质量分 66
星云999
学无止境!
展开
-
Java之路:截尾、舍入与提升
截尾和舍入在执行窄化转换时,必须注意截尾与舍入的问题。例如:如果将一个浮点数转换为整型值,Java会如何处理呢?如果将29.7转换为int,结果是30还是29?public class Cast { public static void main(String[] args) { float f = 29.7f; double d = 200.13213; int i = (in...原创 2018-12-14 08:34:56 · 500 阅读 · 0 评论 -
Java之路:集成设计模式
集成设计模式通过分析我们发现不同的事物类之间,都是依靠引用进行连接的,那么思考一个问题:给你一堆电脑零件,是否可以装成电脑?那么下面继续再分析一下电脑的组成,假设给你各个零件:主板、CPU、硬盘、内存、机箱、电源、显示器、键盘、鼠标。那么将电脑看成一个类,这些组件便是这个类中的各个对象。而这些小的对象又可以单独作为一个类拥有自己的对象。class 主板 { private CPU 对象 ;...原创 2018-12-09 21:33:03 · 313 阅读 · 1 评论 -
Java之路:你真的了解final吗?
finalfinal在Java之中称为终结器,final关键字可以修饰类、成员变量和方法中的局部变量。如果成员变量或局部变量被修饰为final的,就是常量。1、final修饰类使用关键字final修饰的类称为final类,该类不能被继承,有时为了程序的安全性,可以将一些重要的类声明为final类。2、final修饰成员变量成员变量是随着类初始化而初始化的。当类初始化时,系统会为...原创 2018-12-15 09:41:30 · 2340 阅读 · 2 评论 -
Java之路:this关键字的用法
(1)普通方法中,this总是指向调用该方法的对象。(2)构造方法中,this总是指向正要初始化的对象。(3)this可以让类中的一个方法,访问该类的另一个方法或属性。(4)可以使用this关键字调用重载构造方法。避免相同的初始化代码,只能在构造方法中用,并且必须位于构造方法的第一句。(5)this不能用于static方法。用this调用构造方法package this_const...原创 2018-12-15 09:42:22 · 46976 阅读 · 2 评论 -
Java之路:数组
数组1、定义数组,顾名思义,即是一组数据,是有序数据的集合,数组中的每个元素必须是相同的数据类型,可以用统一的数组名和下标来唯一地确定数组中的元素。从本质上说,它是存储数据的一个容器。在Java中,数组也可以视为一种数据类型,它本身是一种引用类型。引用类型(reference type),引用类型的变量非常类似于C/C++的指针。而指针变量放到Java中便是引用类型变量。数据类型...原创 2018-12-15 09:49:34 · 136 阅读 · 0 评论 -
Java之路:变量作用域
变量作用域变量是有作用范围(Scope)的,也即作用域。一旦超出变量的作用域,就无法再使用这个变量。按作用域范围划分,变量分为成员变量和局部变量。(1)成员变量在类体内定义的变量称为成员变量,它的作用域是整个类,也就是说在这个类中都可以访问到定义的这个成员变量。【例】public class Demo { static int i = 47; // 定义一个成员变量,作用域是...原创 2018-12-15 09:50:01 · 10774 阅读 · 1 评论 -
Java之路:运算符
一、赋值运算符:=它的意思是“取右值,把它复制给左值”。右值可以是任何常数、变量或表达式(只要它能生成一个值就行)。但左值必须是一个明确的、已命名的变量,即必须有一个物理空间可以存储等号右边的值。如下:int a;a = 4; // 可以将常量赋给变量//以下是错误4 = a; // 不能把任何东西赋给一个常数1、对于基本数据类型,赋值运算符是很简单的,基本类型存储了实际的值...原创 2018-12-15 09:50:29 · 269 阅读 · 0 评论 -
int i;;合法吗?
int i;;int n;;;;;;;;;;;;;上面两条语句合法吗?答案是合法,事实上,由于多个Java语句可以处于同一行,那么int i ;;就可以解读为“int i;”这条语句和另外一个空语句“;”共处于一行之上。int i语句后面即使跟10个分号也合法。...原创 2018-12-15 09:50:50 · 1712 阅读 · 0 评论 -
Java之路:对象克隆
对象克隆对象克隆指的就是将一个对象进行内容的复制,如果要想实现克隆操作,可以使用Object类之中定义的一个方法。如果要想正常地实现克隆操作,那么对象所在的类必须实现Cloneable接口,但是这个接口里面并没有定义任何的方法,此接口属于标识接口,指的是一种能力的体现。protected Object clone() throws CloneNotSupportedException;...原创 2018-12-09 21:50:42 · 102 阅读 · 0 评论 -
Java之路:反射机制
1、认识反射Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法,这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。Java反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法。...原创 2018-12-10 10:56:15 · 98 阅读 · 0 评论 -
Java之路:引用传递
1、引用传递引用传递也称为传地址,指的是在方法调用时,传递的参数是按引用进行传递,其实传递的是引用的地址,也就是变量所对应的内存空间的地址。方法调用时,实际参数的引用——地址被传递给方法中相对应的形式参数,即形式参数和实际参数拥有相同的存储单元。在方法执行过程中,对形式参数的操作实际上就是对实际参数的操作,因此形式参数值的改变将会影响实际参数的值。2、堆内存与栈内存(1)堆内存:堆内...原创 2018-12-09 21:27:18 · 243 阅读 · 0 评论 -
Java之路:大数字操作类
现在思考一个问题,如果说现在要对一个非常大的数字进行操作,并且这个数字已经超过了double的范畴,那么该如何做呢?这个时候如果要想解决问题,唯一的做法是将数字变为字符串,之后按位进行手工的计算,自己处理进位是不是很麻烦?而在Java里面为了简化此类操作专门提供了两大数字操作类:java.math. BigInteger、java.math.BigDecimal。大型整数操作类BigIn...原创 2018-12-09 20:33:44 · 396 阅读 · 0 评论 -
Java之路:String类
Java中定义了String和StringBuffer两个类来封装对字符串的各种操作,它们都被放到了java. lang包中,不需要用import java.lang这个语句导入该包就可以直接使用它们。String类用于比较两个字符串,查找和抽取串中的字符或子串,进行字符串与其他类型之间的相互转换等。String类对象的内容一旦被初始化就不能再改变,对于String类的每次改变(例如字符串...原创 2018-12-09 20:32:46 · 776 阅读 · 1 评论 -
Java之路:==与equals()的区别
关系运算符 ==【示例1】public class Equal { public static void main(String[] args) { int m = 3; int n = 3; Integer n1 = new Integer(47); Integer n2 = new Integer(47); System.out.println(m == n); ...原创 2018-12-14 08:36:01 · 178 阅读 · 0 评论 -
Java之路:break、continue与return的区别
1、不带标签breakpublic class BCR { public static void main(String[] args) { int i, j; for(i = 1; i < 10; i++) { for(j = 1; j < 10; j++) { if(j%3 == 0) break; // 跳出内层循环 System.ou...原创 2018-12-14 08:36:37 · 162 阅读 · 0 评论 -
Java之路:基本数据类型
在Java中,数据类型一共分为两大类:基本数据类型、引用数据类型。基本数据类型由Java语言定义,不可以再进行划分。基本数据类型的数据占用内存的大小固定,在内存中存入的是数值本身,而引用数据类型在内存中存入的是引用数据的存放地址,并不是数据本身。基本数据类型是一个单纯的数据类型,它表示的是一个具体数字、字符或逻辑值。在Java中规定了8种基本数据类型来存储整数、浮点数、字符和布尔值...原创 2018-12-14 08:37:13 · 368 阅读 · 0 评论 -
Java之路:常量与变量
常量(Constant)1、常量定义所谓常量,就是固定不变的量,其一旦被定义并初始化,它的值就不能再改变。2、常量声明在Java语言中,常用关键字final声明常量,语法如下:// 方法1,推荐使用final 数据类型 常量名 = 常量值;// 方法2final 数据类型 常量名;常量名 = 常量值;注意(1)常量名和标识符的命名规则一样,可由任意顺序的大小写字母、数...原创 2018-12-14 08:37:36 · 192 阅读 · 0 评论 -
Java之路:面向对象与面向过程
一、结构化程序设计早期的程序设计,大量使用共享变量(全局变量)和goto语句,这使得代码结构比较混乱,不容易改错和复用。后来有人证明所有的有意义的程序流程都可以使用顺序、选择和循环来实现,并由此提出结构化程序设计。它的主要观点是采用自顶向下、逐步求精及模块化的程序设计方法,使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环这三种基本控制结构来构造。结构化程序设计主要强调的是程序...原创 2018-12-14 08:38:08 · 556 阅读 · 0 评论 -
Java之路:类与对象
一、类将具有相同属性及相同行为的一组对象称为类(class)。广义地讲,具有共同性质的事物的集合就称为类。在面向对象程序设计中,类是一个独立的单位,它有一个类名,其内部包括成员变量,用于描述对象的属性;还包括类的成员方法,用于描述对象的行为。在Java程序设计中,类被认为是一种抽象的数据类型,这种数据类型不但包括数据,还包括方法,这大大地扩充了数据类型的概念。类是一个抽象的概念,要...原创 2018-12-14 08:38:33 · 230 阅读 · 1 评论 -
Java之路:接口
接口接口(interface)是Java所提供的另一种重要技术,是一种特殊的类,它的结构和抽象类非常相似,也具有数据成员与抽象方法,但它与抽象类又有不同,并且Java 8中又添加了新特性。1、接口的定义与使用(1)接口中的变量会被隐式地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译错误)。接口里的数据成员...原创 2018-12-14 08:38:56 · 442 阅读 · 0 评论 -
Java之路:基本数据类型的包装类
在介绍这之前,先说下什么叫做API。API (Application Programming Interface)就是应用程序编程接口。假设现在要编写一个机器人程序,去控制一个机器人踢足球,程序需要向机器人发出向前跑、向后转、射门、拦截等命令,没有编过程序的人很难想象如何编写这样的程序。但对于有编程经验的人来说,就知道机器人厂商一定会提供一些控制这些机器人的Java类,该类中就有操纵机器人...原创 2018-12-09 13:26:17 · 159 阅读 · 1 评论 -
Java之路:正则表达式
首先来看个例子:判断一个字符串是否由数字组成:public class JudgeString { public static void main(String[] args) throws Exception { if(isNumber("123")) { // 判断字符串是否有数字组成 System.out.print("由数字组成!"); } else { ...原创 2018-12-09 16:23:08 · 582 阅读 · 1 评论 -
Java之路:包及访问权限
1、包的基本概念包是一个文件夹,它是类的一种特殊的性质,可以更合理地管理大量的类文件,设置他人对类成员的访问权等。在用Java开发大型项目时,通常要把类分门别类地存到文件里,再将这些文件一起编译执行,这样的程序代码将更易于维护。同时在将类分割开之后,对于类的使用也就有了相应的访问权限。所谓的包(package)指的就是一个文件夹,即在不同的文件夹之中可以保存同名的类文件。包的使用...原创 2018-12-10 11:44:07 · 294 阅读 · 0 评论 -
Java之路:单例设计模式(Singleton Pattern)
构造方法的私有化一个方法可根据实际需要,将其设置为不同的访问权限——public(公有访问)、private(私有访问)或默认访问(即方法前没有修饰符)。同样,构造方法也有public与private之分。如果构造方法被设为private,那么其他类中就无法调用该构造方法。 换句话说,在本类之外,就不能通过new关键字调用该构造方法创建该类的实例化对象,构造方法被声明为private类型则只...原创 2018-12-10 13:44:36 · 122 阅读 · 1 评论 -
Java之路:前期版本留下的类和接口
java.util的最初版本中不包括类集框架。 取而代之,它定义了几个类和接口提供专门的方法用于存储对象。随着在Java 2中引入类集,有几种最初的类被重新设计成支持类集接口,因此它们与框架完全兼容。尽管实际上没有类被摈弃,但其中某些方法仍被认为是过时的。当然,在那些重复从以前版本遗留下来的类的功能性的地方,通常都愿意用类集编写新的代码程序。一般来说,对从以前版本遗留下来的类的支持是因为仍然存...原创 2018-12-11 16:54:00 · 107 阅读 · 0 评论 -
Java之路:Collections类
Collections类和Collection接口没有任何的继承关系。 它是集合类的一个工具类/辅助类,此类的主要目的是提供了一系列的静态方法,用于对集合中元素进行排序(Sort)、混排(Shuffling)、反转(Reverse)、复制(Copy)以及线程安全等各种操作。请参见下面有关的Collections类使用的范例:package com.xy.test2;import java...原创 2018-12-11 17:00:48 · 94 阅读 · 0 评论 -
Java之路:泛型
Java的类集框架在本质上就相当于容器,而容器中装的是什么东西需要程序员指定。为了实现了算法与数据类型的无关性以及容器(数据结构)与数据类型的无关性,所以就引出了泛型的概念。泛型是Java SE 1.5之后引入的新特性,泛型的本质是数据类型参数化,也就是说,所操作的数据类型被指定为一个参数。 这种类型变量可以用在类、接口和方法的创建中。例:List<Apple> box=ne...原创 2018-12-11 17:13:25 · 108 阅读 · 0 评论 -
Java之路:Comparable和Comparator,Collection和Collections,Collection和Map
请解释两种比较器Comparable和Comparator的区别(面试题)。如果要进行对象数组的排序那么需要比较器的支持,Java有两种比较器:Comparable、Comparator。(1)java.lang.Comparable:只有一个compareTo()方法,是在类定义的时候默认实现好的接口;(2)java.util.Comparator:有两个方法compare()、equa...原创 2018-12-11 17:17:34 · 133 阅读 · 0 评论 -
Java之路:多线程
一、进程与线程 进程:进程就是程序执行中的程序。它是一个动态概念。当我们下载一个QQ程序(腾讯公司出品的一款即时聊天软件)时,程序是静态不变的,而当我们开启3个QQ窗口聊天时,实际上就是开启了三个QQ进程。由此可见,一个程序是可以对应多个进程的。每一个进程都有自己独立的一组系统资源(包括处理机、内存等)。在进程的概念中,每一个进程的内部数据和状态都是完全独立的进程是操作系统的资源...原创 2018-12-12 10:07:42 · 170 阅读 · 0 评论 -
Java之路:多线程的同步
先来看一个程序:package com.xy.thread;class ThreadDemo3 extends Thread { private static int tickets = 5; // 将票设置为静态的 public void run() { while(tickets &gt; 0) { System.out.println(Thread.currentThrea...原创 2018-12-12 10:37:17 · 151 阅读 · 0 评论 -
Java之路:死锁
在没有讲解死锁的概念之前,我们先从一个生活中的案例来体会一下:假设有甲乙两个人在就餐,每个人就餐必须同时拥有一把餐刀和一把叉子。但目前餐具不足,统共只有一把餐刀和一把叉子。现在,甲拿到了一把餐刀,乙拿到了一把叉子,他们都无法吃到饭。于是,就有了下面的对话:甲:“乙你先给我叉子,我再给你餐刀!”乙:“甲你先给我餐刀,我才给你叉子!”……如果甲乙双方都不让步,那么局面就会一直僵持下去,他们...原创 2018-12-12 11:00:24 · 172 阅读 · 0 评论 -
Java之路:线程间的通信
同属于一个进程的多个线程,是共享地址空间的,它们可以一起协作来完成指定的任务。因此,线程之间必须相互通信,才能完成协作。一、引入问题下面通过一个应用案例来讲解线程间的通信。把一个数据储存空间划分为两个部分:一部分用于储存用户的姓名,另一部分用于储存用户的性别。这个案例包含两个线程:一个线程向数据存储空间添加数据(生产者),另一个线程从数据存储空间中取出数据(消费者)。这个程序有两种意外需要考...原创 2018-12-12 11:43:44 · 125 阅读 · 0 评论 -
Java之路:线程生命周期的控制
任何事物都有一个生命周期,线程也不例外。要想控制线程的生命,先得了解线程产生和消亡的整个过程。请读者结合前面讲的内容,请观察下图:控制线程生命周期的方法有多种,如suspend()方法、resume()方法和stop()方法。但是这3个方法都不推荐使用,特别是suspend和resume方法尽量慎用,原因是它们很可能导致发生死锁。虽然stop()能够避免死锁的发生,但是也有其不足之处。如果一...原创 2018-12-12 11:56:44 · 140 阅读 · 0 评论 -
Java之路:Hashtable(哈希表)
哈希表(Hashtable,又称散列表)是早期java.util包中的一部分,同时也是Dictionary接口的一个具体实现。然而,自Java 2起,重新设计了哈希表(Hashtable),以便它也能实现映射(Map)接口。因此现在Hashtable也被集成到类集框架中。它与HashMap相似,但它是同步的。和HashMap一样, Hashtable将关键字/值对存储到散列表中。使用Hashta...原创 2018-12-11 15:49:27 · 601 阅读 · 0 评论 -
Java之路:映射(Map)
在java.util中还增加了映射(Map)。映射是一个存储关键字和值的关联,或者说是“关键字/值”对的对象,即给定一个关键字,可以得到它的值。关键字和值都是对象,关键字必须是唯一的,但是可以存在相同的值。有的映射可以接收null关键字和null值,有的则不能。可以将Map视为偶对象保存接口。Collection每一次只保存一个对象,而Map保存的是一对对象,而且这一对对象一定是按照“Key...原创 2018-12-11 15:39:36 · 7826 阅读 · 0 评论 -
Java之路:如何在容器中添加一组元素
(1)Array.asList()方法接受一个数组或是一个用逗号分隔的元素列表(使用可变列表),并将其转换为一个List对象。(2)Collections.addAll()方法接受一个Collection对象,以及一个数组或是一个用逗号分隔的列表,将元素添加到Collction中。注:Collection的构造器可以接受另一个Collection,用它来初始化自身。(3)Collec...原创 2018-12-21 19:16:51 · 946 阅读 · 2 评论 -
Java之路:多例设计模式(Multiton Pattern)
单例设计模式是只能够存在一个实例化对象,而多例设计模式指的是一个类可以定义指定多个对象,但是不管是单例还是多例,构造方法都不可能使用public定义。实际上对于多例设计能够体现在很多的方面,例如:现在要定义一个表示一周时间数的类,那么这个类只能够有七个对象。如果定义一个表示性别的类,那么这个类只能有两个对象。例如表示颜色基色的类只有三个对象,这些都属于多例设计模式。下面看一个多例设计的例子:...原创 2018-12-10 13:58:15 · 784 阅读 · 0 评论 -
Java之路:在子类中覆盖基类私有方法
// Override a private methodpublic class PrivateOverride { private void f() { System.out.print("private f()"); } public static void main(String[] args) { PrivateOverride po...原创 2018-12-21 10:55:51 · 417 阅读 · 0 评论 -
Java之路:异常的捕获与处理
不管使用的是哪种语言进行程序设计,都会产生各种各样的错误。Java提供有强大的异常处理机制。在Java中,所有的异常被封装到一个类中,程序出错时会将异常抛出。一个程序能在正常情况正确地运行,这是一个程序的基本要求。但一个健壮的程序则需要考虑很多会使程序失效的因素,即它要在非正常的情况下,也要能进行必要的处理。程序是由程序员编写的,而程序员是存在思维盲点的,一个合格的程序员能保证Java程序不...原创 2018-12-10 15:23:16 · 3492 阅读 · 0 评论 -
Java之路:throws、throw
throws在Java标准库中的方法通常并没有处理异常,而是交由使用者来处理,如判断整数数据格式是否合法的Integer.parseInt()方法就会抛出NumberFormatException异常。这是怎么做到的?看一下API文档中的方法原型:public static int parseInt(String s)throws NumberFormatException就是这个...原创 2018-12-10 15:58:05 · 4703 阅读 · 0 评论