java学习笔记49:容器 一、容器 开发和学习中需要时刻和数据打交道,如何组织这些数据是我们编程中重要的内容。 我们一般通过“容器”来容纳和管理数据。那什么是“容器”呢?生活中的容器不难理解,是用来容纳物体的,如锅碗瓢盆、箱子和包等。程序中的“容器”也有类似的功能,就是用来容纳和管理数据。 事实上,我们所学的数组就是一种容器,可以...
java学习笔记48:异常的处理方式:捕获异常(try...catch...)、抛出异常(声明异常(throws子句)),利用百度解决异常问题,手动抛出异常:自定义异常 一、捕获异常(try,catch,finally)捕获异常是通过3个关键词来实现的:try-catch-finally。用try来执行一段程序,如果出现异常,系统抛出一个异常,可以通过它的类型来捕捉(catch)并处理它,最后一步是通过finally语句为异常处理提供一个统一的出口,finally所指定的代码都要被执行(catch语句可有多条;finally语句最多只能有一条,根据自己的需要可有...
java学习笔记47:运行时异常RuntimeException、已检查异常CheckedException 一、运行时异常RuntimeException派生于RuntimeException的异常,如被 0 除、数组下标越界、空指针等,其产生比较频繁,处理麻烦,如果显式的声明或捕获将会对程序可读性和运行效率影响很大。 因此由系统自动检测并将它们交给缺省的异常处理程序(用户可不必对其处理)。 这类异常通常是由编程错误导致的,所以在编写程序时,并不要求必须使用异常处理机制来处理这类异常,经常需要通过...
java学习笔记46:异常机制、异常分类、Error异常、Exception异常 一、异常:写程序时,经常遇到例外的情况,我们称之为异常在实际工作中,我们遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求;你的程序要打开某个文件,这个文件可能不存在或者文件格式不对;你要读取数据库的数据,数据可能是空的;我们的程序再运行着,但是内存或硬盘可能满了等等。 软件程序在运行过程中,非常可能遇到刚刚提到的这些问题,我们称之为异常,英文是:Exceptio...
java学习笔记45:枚举 JDK1.5引入了枚举类型。枚举类型的定义包括枚举声明和枚举体。格式如下: enum 枚举名 { 枚举体(常量列表) }枚举体就是放置一些常量。我们可以写出我们的第一个枚举类型,如下示例所示:示例:创建枚举类型enum Season { SPR...
java学习笔记44:File类的基本用法、递归打印目录树结构(递归遍历目录结构和树状展现) 一、Flie类的基本用法 java.io.File类:代表文件和目录。 在开发中,读取文件、生成文件、删除文件、修改文件的属性时经常会用到本类。File类的常见构造方法:public File(String pathname) 以pathname为路径创建File对象,如果pathname是相对路径,则默认的...
java学习笔记43:Math类、Random类 java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型。如果需要更加强大的数学运算能力,计算高等数学中的相关内容,可以使用apache commons下面的Math类库。Math类的常用方法: 1. abs 绝对值 2. acos,asin,atan,...
java学习笔记42:Calendar类和GregorianCalendar类的使用、可视化日历的编写        Calendar 类是一个抽象类,为我们提供了关于日期计算的相关功能,比如:年、月、日、时、分、秒的展示和计算。 GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。菜鸟雷区 注意月份的表示,一月是0,二月是1,以此类推,12月是11。
java学习笔记41:Date时间类及jdk源码分析、DateFormat类和SimpleDateFormat类 一、Date时间类注:把1970 年 1 月 1 日 00:00:00定为基准时间,每个度量单位是毫秒(1秒的千分之一) 用long类型的变量来表示时间,从基准时间往前几亿年,往后几亿年都能表示。如果想获得现在时刻的“时刻数值”,可以使用: long now = System.currentTimeMillis();这个“时刻数值”是所有时间类的核心值,年月日都是根据这个“数值”计...
java学习笔记40:String类、StringBuild和Stringbuffer、不可变和可变字符序列使用的陷阱 一、String类 String类对象代表不可变的Unicode字符序列,因此我们可以将String对象称为“不可变对象”。 那什么叫做“不可变对象”呢?指的是对象内部的成员变量的值无法再改变。打开String类的源码,如下图所示: 我们发现字符串内容全部存储到value[]数组中,而变量value是f...
java学习笔记39:自动装箱和拆箱、空指针问题、包装类的缓存问题 一、自动装箱和拆箱 自动装箱和拆箱就是将基本数据类型和包装类之间进行自动的互相转换。 JDK1.5后,Java引入了自动装箱(autoboxing)/拆箱(unboxing)。 自动装箱: 基本类型的数据处于需要对象的环境中时,会自动转为“对象”。 我们以Integer为例:在JDK1.5以前,这...
java学习笔记38:包装类:基础及使用 一、包装类基础        Java是面向对象的语言,但并不是“纯面向对象”的,因为我们经常用到的基本数据类型就不是对象。但是我们在实际应用中经常需要将基本数据转化成对象,以便于操作。比如:将基本数据类型存储到Object[]数组或集合中的操作等等。 为了解决这个不足,Java在设计类时为每个基
java学习笔记37:冒泡排序的基础算法和优化算法、二分法查找 一、冒泡排序1、冒泡排序的基础算法 冒泡排序是最常用的排序算法,在笔试中也非常常见,能手写出冒泡排序算法可以说是基本的素养。 算法重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来,这样越大的元素会经由交换慢慢“浮”到数列的顶端。冒泡排序算法的运作如下: 1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2. 对每一对相邻元素作同样的工...
java学习笔记36:多维数组的声明及内存分析、动静态初始化、获取二维数组的长度、数组存储表格数据 多维数组可以看成以数组为元素的数组。可以有二维、三维、甚至更多维数组,但是实际开发中用的非常少。最多到二维数组(学习容器后,我们一般使用容器,二维数组用的都很少)。示例:二维数组的声明public class Test { public static void main(String[] args) { //Java中多维数组的声明和初始化应按从低维到高维的顺序进行 int[][]...
java学习笔记35:Arrays工具类的使用:打印、排序、二分法查找元素、填充(替换) JDK提供的java.util.Arrays类,包含了常用的数组操作,方便我们日常开发。Arrays类包含了:排序、查找、填充、打印内容等常见的操作。示例:Arrays工具类的使用:打印数组package test;import java.util.Arrays;public class TestArrays { public static void main(String[] a...
java学习笔记34:数组的拷贝、插入和删除元素本质、数组扩容操作 数组的拷贝System类里也包含了一个static void arraycopy(object src,int srcpos,object dest, int destpos,int length)方法,该方法可以将src数组里的元素值赋给dest数组的元素,其中srcpos指定从src数组的第几个元素开始赋值,length参数指定将src数组的多少个元素赋给dest数组的元素。注:容器的底层...
java学习笔记33:String类及常用方法、常量池、阅读API文档、字符串的相等判断及内存分析 一、String基础1、String类又称作不可变字符序列。2、 String位于java.lang包中,Java程序默认导入java.lang包下的所有类。3、Java字符串就是Unicode字符序列,例如字符串“Java”就是4个Unicode字符’J’、’a’、’v’、’a’组成的。4、Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义的类String,每个用双引...
java学习笔记32:内部类:静态和非静态内部类、匿名内部类、方法内部类 一、内部类内部类(innerclasses):把一个类放在另一个类的内部定义 内部类可以使用public、default、protected 、private以及static修饰。而外部顶级类(我们以前接触的类)只能使用public和default修饰。注意 内部类只是一个编译时概念,一旦我们编译成功,就会成为完全不同的两个类。对于一个名为Outer的外部类和其内部定义的名为In...
java学习笔记31:接口、多继承、面向接口编程 一、接口1、 接口的作用:为什么需要接口?接口和抽象类的区别? 接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。 抽象类还提供某些具体实现,接口不提供任何实现, 接口中所有方法都是抽象方法。接口是完全面向规范的,规定了一批类具有的公共方法规范。 从接口的实现者角度看,接口定义了可以向外部提...