java从入门到精通
2023-06-10 14:01:08 0 举报
AI智能生成
EEE
作者其他创作
大纲/内容
第一章初识java
java简介
java的应用领域
桌面应用系统开发,嵌入式系统开发,电子商务应用,企业级应用开发,交互式系统开发,多媒体系统开发,发布式系统开发,wed应用开发,移动端应用开发
什么是java语言
Java是一种通用的,基于类的,面向对象的编程语言。它是用于应用程序开发的计算平台。因此,Java是快速,安全和可靠的。它被广泛用于在笔记本电脑,数据中心,游戏机,科学超级计算机,手机等中开发Java应用程序。
java的版本
主要分为两个,javase ,javaee,一般用的多的是javase这是标准版
java语言的特性
跨平台/可移植性,安全性,面向对象,简单性,高性能,分布式,多线程,健壮性
第二章熟悉eclipse开发工具
熟悉eclipse
透视图与视图
透视图是一个包含一系列视图和内容编辑器的可视容器,默认的透视图叫java。 透视图是Eclipse工作台提供的附加组织层,它实现多个实图的布局和可用操作的集合,并为此集合定义一个名称,起组织的作用。 Eclipse窗口可以打开多个透视图,但在同一时间只能有一个透视图处于激活状态,用户可以在两个透视图之间切换。
菜单栏
java的一些功能菜单栏
工具栏
位于菜单栏的下方,工具栏中的都是菜单栏的快捷键
使用eclipse
创建java项目
创建一个项目,第一个框框为项目名,然后在jre中选择Java版本,然后点击netc,弹出窗口后图中,所有的代码都会存储在src中,再点击finiish,然后点击主界面中window里的new window,弹出下图,打开hello旁的小箭头,删除src下的无用文件
创建java类文件
右键src,new,再点击class创建一个类。
在Name中添加需要创建的类名(类名shoul首字母必须是大写),再勾选public static void.....
最后点击finfsh
在Name中添加需要创建的类名(类名shoul首字母必须是大写),再勾选public static void.....
最后点击finfsh
运行java文件
点三角形图像就能运行了
第三章java语言基础
java主类结构
Java语言是面向对象的程序设计语言,Java程序的基本组成单元是类,类体中又包括属性和方法两部分。每个应用程序都必须包含一个main()方法,含有main()方法的类称为主类。
基本数据类型
整型byte 、short 、int 、long
虽然byte、short、int、long 数据类型都是表示整数的,但是它们的取值范围可不一样。
浮点型float 、 double
float 和 double 都是表示浮点型的数据类型,它们之间的区别在于精确度的不同。
字符型char
初始化方式
布尔型boolea
boolean 型只有两个取值 true 和 false
它的默认值是 false
对于布尔型占用的空间,得看JVM对于它的具体实现,有些JVM底层其实是使用0和1来表示true和false,那么就是4字节。
它的默认值是 false
对于布尔型占用的空间,得看JVM对于它的具体实现,有些JVM底层其实是使用0和1来表示true和false,那么就是4字节。
变量与常量
声明变量
变量就是指代在内存中开辟的存储空间,用于存放运算过程中需要用到的数据。 变量的声明 变量必须先声明后使用。 相同的变量只能声明一次。 格式:变量类型 变量名 = 变量值
声明常量
在运行中不会发生变化的量,final 数据类型 常量名称 【=值】
标识符
Java 中标识符是为方法、变量或者其他用户定义项定义的名称。
标识符用来对变量、常量、类和方法等进行命名。
标识符用来对变量、常量、类和方法等进行命名。
关键字
它们用来表示一种数据类型,或者表示程序的结构等。
保留字是为 Java 预留的关键字,
保留字是为 Java 预留的关键字,
运算符
赋值运算符
=
算术运算符
+-*、%
自增和自减运算符
++a a++ --a a--
比较运算符
逻辑运算符
位运算运算符
三元运算符
条件式 ? 值1 :值2
运算符优先级
数据类型转换
隐式类型转换
隐式类型转换由编译器自动进行,不需要程序员干预。
隐式类型转换通常有两种情况:赋值转换和运算转换。
隐式类型转换通常有两种情况:赋值转换和运算转换。
显式类型转换
显示类型转换由程序员明确指定,显示类型转换也称为强制类型转换。
流程控制
复合语句
复合语句是以整个块为单位的语句,所以又称为块语句,复合语句由“{”开始,以“}”结束。复合语句中的每个语句都是从上到下执行的,并且在复合语句中可以嵌套复合语句。
条件语句
Java 中的条件语句允许程序根据条件的不同执行不同的代码块。 一个 if 语句包含一个布尔表达式和一条或多条语句。
if语句
switch语句
循环语句do.....while
对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。
do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。
do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。
循环语句while
for循环语句
循环控制break
当在循环中遇到 break 语句时,循环终止并进行程序控制在循环后的下一条语句中恢复。
循环控制continue
continue 语句类似于 break 语句,但它只能出现在循环体中。它与 break 语句的区别在于:continue 并不是中断循环语句,而是中止当前迭代的循环,进入下一次的迭代,但只能在while中用
数组
数组的概念
数组(array)是一种最简单的复合数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来确定数组中唯一的元素。根据数组的维度,可以将其分为一维数组、二维数组和多维数组等,可以存储多个数据。
一维数组
当数组中每个元素都只带有一个下标时,这种数组就是“一维数组”。一维数组(one-dimensional array)实质上是一组相同类型数据的线性集合,是数组中最简单的一种数组。一般式,type[] arrayName; // 数据类型[] 数组名;
二维数组
二维数组好比一个表格,第一个下标表示行,第二个下标表示列,数组的创建和初始化与一位数组一模一样,及二维数组就是一个把多个一维数组包起来的数组。创建type[][] arrayName;或者 type arrayName[][];
数组的基本操作
1. 声明数组并开辟空间 2. 给数组各个元素赋值 3. 使用数组
数组排序算法
冒泡排序法
比较相邻的元素,如果第一个比第二个大,就交换它们两个;
对每一对相邻元素作同样的比价,从开始第一对到结尾的最后一对,这样在最后的元素就是最大的数;
针对所有的元素重复以上的步骤,除了数组最后已经排好序的数组;
重复步骤1~3,直到排序完成。
对每一对相邻元素作同样的比价,从开始第一对到结尾的最后一对,这样在最后的元素就是最大的数;
针对所有的元素重复以上的步骤,除了数组最后已经排好序的数组;
重复步骤1~3,直到排序完成。
直接选择排序法
开始时,待排序序列为R[0]…R[n-1],经过选择和交换后,R[0]中存放最小关的记录
第二次待排序记录序列为R[1]…R[n-1],经过选择和交换后,R[1]为仅次于R[0]的具有次小关键字的记录;
如此类推,经过n-1次选择和交换之后,R[0]…R[n-1]成为有序序列,即可实现排序
第二次待排序记录序列为R[1]…R[n-1],经过选择和交换后,R[1]为仅次于R[0]的具有次小关键字的记录;
如此类推,经过n-1次选择和交换之后,R[0]…R[n-1]成为有序序列,即可实现排序
反转排序
类与对象
面对对象的概述
类其实就是一个模板,比如说类就好比一张房子的设计图纸,或者说是一个倒印模具,创建一个类就好比设计一张图纸,刻一个模板。对象就好比一座建好的房子,一个成型的模型,无疑想要一座房子或者一个模型都先需要一张图纸和一个模板,而这就是类和对象的关系。
对象
世间万物都可以是一个对象
类
类放在现实中,如人是一个对象,类就是对象的统称
类是对象的设计图
类是对象的设计图
封装
把一个对象的静态和动态装入类中就叫封装,好处可以提高代码的复用性,就是可以用很多遍,不想用了可以丢一边,而放进类种的过程叫做封装
继承
父类的代码,子类可以不用写直接拿过来用
代码中,类中的属性,如果每个对象都会有就放在父类,如不是则放进子类
代码中,类中的属性,如果每个对象都会有就放在父类,如不是则放进子类
多态
一个类有特性不同的对象,会有不同状态的对象,这种叫做多态
官方一点的话叫做将父类的对象应用与子类的特征就是多态
官方一点的话叫做将父类的对象应用与子类的特征就是多态
类
局部变量
在动态属性也就是成员方法种的变量就是局部变量
成员方法
在某些情况下,我们在需要定义成员方法(简称方法)。比如人类:除了有一些属性外(年龄、姓名等),我们人类还有一些行为比如:可以说话,跑步,通过学习还可以做算术题等等。这时就要用成员方法才能完成。
成员变量
实例成员变量:是定义在方法外部和类内部的且不被static所修饰的变量.用于描述一个类中包含哪些数据
控制修饰符
static
静态的
public static void main(string[]args)
局部变量
public static void main(string[]args)
局部变量
this关键字
this可以调用成员方法和成员变量,也就是动态属性和静态属性,但只能在所在的类中使用
类的构造方法
构造方法没有返回值。
构造方法的名称要与本类的名称相同
如public Book(){
。。。//构造方法体
}
构造方法的名称要与本类的名称相同
如public Book(){
。。。//构造方法体
}
对象
语法
类名 引用变量的名称
一个people的引用可以用以下方法
people tom;
引用对象相关的语法如下
people tom =new people();
类名 引用变量的名称
一个people的引用可以用以下方法
people tom;
引用对象相关的语法如下
people tom =new people();
继承·多态抽象类与接口
类的继承
一个类继承另一个类需要使用另一类需要使用的关键字extends
使用方法为
class Child extends Parent{}
使用方法为
class Child extends Parent{}
Object类
Object包括clone(),finalize等等方法
Object类中的几个重要方法
1.getClass()方法
Object类中的几个重要方法
1.getClass()方法
对象类型的转换
向上转型
子类对象赋值给父类引用、
animal a = new Dog()
子类对象赋值给父类引用、
animal a = new Dog()
向上转型
子类对象赋值给父类引用、
animal a = new Dog()
子类对象赋值给父类引用、
animal a = new Dog()
使用instanceof关键字判断对象类型
语法
myobject instanceof ExampleClass
myobject instanceof ExampleClass
方法重载
final关键字
final修饰变量———不可改变的量(常量)
final修饰方法————不能被重写
final修饰类——不能被继承
final修饰方法————不能被重写
final修饰类——不能被继承
final 类
语法
final 类名{}
多态
利用多态可以使程序具有良好的打展性,并可以对所有类对象进行通用的处理。在7.3节中已经学习过子类对象可以作为父类的对象实例使用,这种将子类对象视为父类对象的做法称为“向上转型”。假如现在要编写个绘制图形的方法 drawO,如果传入正方形对象就绘制正方形,如果传入圆形对象就绘制圆形,这种场景可以使用重载来实现,定义如下:
public vold draw(Square s){
//绘制正方形的方法
public void draw(Circular cK
//绘制圆形的方法
public vold draw(Square s){
//绘制正方形的方法
public void draw(Circular cK
//绘制圆形的方法
抽象
抽象方法 abstract(抽象)
修饰符 abstract 返回参数 方法名 (传入参数);
抽象类 有抽象方法的类一定是抽象类
修饰符 abstract class 类名{
}
如果父类是抽象类,子类是普通类那么重写抽象方法加入方法体
修饰符 abstract 返回参数 方法名 (传入参数);
抽象类 有抽象方法的类一定是抽象类
修饰符 abstract class 类名{
}
如果父类是抽象类,子类是普通类那么重写抽象方法加入方法体
接口
接口 所有方法都是抽象方法
修饰符 interface 接口名{
}
实现 implements
java语言每个类可以实习多个接口
修饰符 class 类名 implements 接口1 ,接口2,...{
}
修饰符 interface 接口名{
}
实现 implements
java语言每个类可以实习多个接口
修饰符 class 类名 implements 接口1 ,接口2,...{
}
包和内部类
类包
什么是类包
在java中每定义一个类,通过java编译器进行编译之后,都会生成一个扩展名为.class的文件。当程序的规模逐渐扩大时,就很容易发生类名称冲突的现象。
java中提供了一种管理类文件的机制,就是类包。
java中提供了一种管理类文件的机制,就是类包。
类名冲突
java中每个接口或类都来自不同的类包,无论是Java API中的类与接口还是自定义的类与接口,都需要隶属于某一个类包,这个类包包含了一些类与接口。
完整的类路径
一个完整的类名需要包含与类名的组合,每个类的隶属一个类包,只要保证同一类包中的类同名,就可以有效地避免同名类冲突的情况。
内部类
成员内部简介
在一个类中使用内部类,可以在内部类中存取其所在类的私有成员变量。
在成员变量类中可以随意使用外部类的成员方法及成员变量,尽管这些类成员被修饰为private。
在成员变量类中可以随意使用外部类的成员方法及成员变量,尽管这些类成员被修饰为private。
使用匿名类一个遵循原则
1.匿名类不能写构造方法
2.匿名类不能定义静态的成员
3.如果匿名类创建的对象没有赋值给任何引用变量,会导致该对象用完一次就会被java虚拟机销毁
2.匿名类不能定义静态的成员
3.如果匿名类创建的对象没有赋值给任何引用变量,会导致该对象用完一次就会被java虚拟机销毁
异常处理
异常的概述
异常是Java提供的一种识别及响应错误的一致性机制。 异常指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。 Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。 在有效使用异常的情况下,异常能清晰的回答 what, where, why 这3个问题:异常类型回答了“什么”被抛出,异常堆栈跟踪回答了“在哪“抛出,异常信息回答了“为什么“会抛出。
异常的抛出与捕捉
抛出异常
检测到错误的程序可以创建一个合适的异常类型的实例并抛出它,这就称为抛出一个异常(throwing an exception)。这里有一个例子,假如程序发现传递给方法的参数与方法的合约不符(例如,方法中的参数必须是非负的,但是传入的是一个负参数),这个程序就可以创建 IllegalArgumentException 的一个实例并抛出它
捕捉异常
现在我们知道了如何声明一个异常以及如何抛出一个异常。当抛出一个异常时,可以在try-catch 块中捕获和处理它;
try-catch-finally
try-catch-finally
抛出异常
如果某个方法可能会产生异常,但不想在当前方法中处理这个异常,则可以使用throws和throw关键字在方法中抛出异常。
使用throws关键字抛出异常
Java异常有Runtime(运行时异常)和Checked(编译时异常),其中,所有RuntimeException类及其子类的实例被称为Runtime异常,不是RuntimeException类及其子类的异常实例都被称为Checked异常。
使用throw关键字抛出异常
hrow关键字虽然可以用于抛出Exception类中的子类异常,但更重要的用途是抛出自定义异常。
异常使用原则
1、不要过度使用异常,虽然通过异常可以增强代码健壮性,但是使用过多不必要的异常处理,会影响效率。
2、不要使用过于庞大的try-catch块,过于庞大,业务过于复杂,会增加try块中出现异常的几率,从而增加分析产生异常原因的难度。
3、避免使用catch(Exception e)如果所有异常都采用相同的处理方式,将导致无法对不同异常进行分类处理。
4、异常既可以使用try-catch处理,也可以使用throws关键字处理,根据实际情况来判断使用哪种方式,两种关键的点就是,使用try-catch发生错误之后可以不影响线程继续执行下面代码,而throws代码抛出异常,也就是不管他,发生异常线程直接终止。
5、如果父类抛出多个异常,则覆盖方法只能抛出和基类方法相同或者更少的异常,异常类也可以抛出该异常类的子类(切记是子类,否则编译报错)。
2、不要使用过于庞大的try-catch块,过于庞大,业务过于复杂,会增加try块中出现异常的几率,从而增加分析产生异常原因的难度。
3、避免使用catch(Exception e)如果所有异常都采用相同的处理方式,将导致无法对不同异常进行分类处理。
4、异常既可以使用try-catch处理,也可以使用throws关键字处理,根据实际情况来判断使用哪种方式,两种关键的点就是,使用try-catch发生错误之后可以不影响线程继续执行下面代码,而throws代码抛出异常,也就是不管他,发生异常线程直接终止。
5、如果父类抛出多个异常,则覆盖方法只能抛出和基类方法相同或者更少的异常,异常类也可以抛出该异常类的子类(切记是子类,否则编译报错)。
字符串
sring类
String类即字符串类型,并不是Java的基本数据类型,但可以像基本数据类型一样使用,用双引号括起来进行声明
String(char a[],int offset,int length)提取字符数组offset开始提取字符的位置,length提取字符的长度。
连接字符串
连接多个字符串
使用“+”运算符可完成对多个字符串连接的功能。
使用“+”运算符可完成对多个字符串连接的功能。
连接其他数据类型
获取字符串信息
获取字符串长度
使用String类的length()方法可获取声明的字符串对象的长度。
使用String类的length()方法可获取声明的字符串对象的长度。
字符串查找
String类提供了两种查找字符串的方法,即indexOf()与lastIndexOf()方法。这两种方法都允许在字符串中搜索指定条件的字符或字符串。
(1)indexOf(String s)
查询字符串首次出现的索引。
String类提供了两种查找字符串的方法,即indexOf()与lastIndexOf()方法。这两种方法都允许在字符串中搜索指定条件的字符或字符串。
(1)indexOf(String s)
查询字符串首次出现的索引。
获取指定索引位置的字符
获取指定索引位置的字符
使用charAt()方法可将指定索引处的字符返回。
语法如下: str.charAt(int index)
str:任意字符串。 index:整型值,用于指定要返回字符的下标。
使用charAt()方法可将指定索引处的字符返回。
语法如下: str.charAt(int index)
str:任意字符串。 index:整型值,用于指定要返回字符的下标。
字符串操作
获取子字符串
通过String类的substring()方法可对字符串进行截取。这些方法的共同点就是都利用字符串的下标进行截取,并应明确字符串下标是从0开始的。
(1)substring(int beginIndex)
(1)substring(int beginIndex)
(2)substring(int beginIndex, int endIndex)
去除空格
trim()方法返回字符串的副本,忽略前导空格和尾部空格。
语法如下: str.trim()
语法如下: str.trim()
字符串替换
replace()方法可实现将指定的字符或字符串替换成新的字符或字符串。
语法如下: str.replace(char oldChar,char newChar)
oldChar:要替换的字符或字符串。
newChar:用于替换原来字符串的内容。
语法如下: str.replace(char oldChar,char newChar)
oldChar:要替换的字符或字符串。
newChar:用于替换原来字符串的内容。
判断字符串的开始与结尾
startsWith()方法与endsWith()方法分别用于判断字符串是否以指定的内容开始或结束。
这两个方法的返回值都为boolean类型。
这两个方法的返回值都为boolean类型。
判断字符串是否相等
判断字符串是否相等有equals()、equalsIgnoreCase()两种方法,而又有各自的规则,使用不好就会出错,所以一定要区分好什么时候用哪种方法。
(1)equals()
(2)equalsIgnoreCase() 不区分大小写比较
按字典顺序比较两个字符串
compareTo()方法为按字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode值,按字典顺序将此String对象表示的字符序列与参数字符串所表示的字符序列进行比较。
字母大小写转换
字符串的toLowerCase()方法可将字符串中的所有字符从大写字母改写为小写字母,而toUpperCase()方法可将字符串中的小写字母改写为大写字母。
(1)toLowerCase()
(2)toUpperCase
字符串分割
split()方法根据指定的分割符对字符串进行分割,并将分割后的结果存放在字符串数组中
(1)split(String str)
(2)split(String str,int limit)
格式化字符串
String类的静态format()方法用于创建格式化的字符串。
(1)format(String format,object.......)
日期和时间字符串格式化
日期和时间字符串格式化
正则表达式
判断是否符合正则表达式的方法使用String类的matches()方法进行判断。
boolean matches(String regex)
regex:指定的正则表达式
boolean matches(String regex)
regex:指定的正则表达式
正则表达式的元字符
正则表达式的限定符
方括号中元字符的含义
字符串生成器
StringBuilder类
StringBuilder类,即字符串生成器,新创建的StringBuilder对象初始容量是16个字符,可以自行指定初始长度,也可以动态地执行添加、删除和插入等字符串的编辑操作,大大提高了频繁增加字符串的效率。
StringBuilder类的常用方法
StringBuilder类的构造方法有很多,主要是参数上的区别,这里我们主要介绍几种在编程中经常会用到的方法。
(1)StringBuilder append(String str)方法
(2)StringBuilder append(StringBuffer sb)方法
(3)StringBuilder insert(int offset, String str) 方法
(4)StringBuilder delete(int start, String end)方法
常用类库
StringBuffer类(重点)
String类的特点:
· String类的对象有两种实例化方式,一种是直接赋值,只会开辟一块堆内存空间,而且对象可以自动入池,另外一种方式使用构造方法完成,会开辟两块空间,有一块空间将成为垃圾,并且不会自动入池,但是可以通过intern()方法手工入池;
· 字符串常量一旦声明则不可改变,而字符串对象可以改变,但是改变的是其内存地址的指向;
通过以上的几个特点就可以清楚的发现,String类是表示字符串使用最多的类,但是其不适合于被频繁修改的字符串操作上,所以在这种情况下,往往可以使用StringBuffer类,即:StringBuffer类方便用户进行内容的修改。在String类之中使用“+”作为数据库的连接操作,而在StringBuffer类之中使用append()方法进行数据的连接。
范例:使用StringBuffer操作,StringBuffer的内容可以改变
· String类的对象有两种实例化方式,一种是直接赋值,只会开辟一块堆内存空间,而且对象可以自动入池,另外一种方式使用构造方法完成,会开辟两块空间,有一块空间将成为垃圾,并且不会自动入池,但是可以通过intern()方法手工入池;
· 字符串常量一旦声明则不可改变,而字符串对象可以改变,但是改变的是其内存地址的指向;
通过以上的几个特点就可以清楚的发现,String类是表示字符串使用最多的类,但是其不适合于被频繁修改的字符串操作上,所以在这种情况下,往往可以使用StringBuffer类,即:StringBuffer类方便用户进行内容的修改。在String类之中使用“+”作为数据库的连接操作,而在StringBuffer类之中使用append()方法进行数据的连接。
范例:使用StringBuffer操作,StringBuffer的内容可以改变
StringBuffer类在日后主要用于频繁修改字符串的操作上,但是在任何的开发之中,面对字符串的操作,98%都先考虑String,只有那2%会考虑StringBuffer。
现在表示字符串的操作类就有了两个:String、StringBuffer,那么通过这两个类的定义来研究一下关系看上面图。
现在表示字符串的操作类就有了两个:String、StringBuffer,那么通过这两个类的定义来研究一下关系看上面图。
现在发现String和StringBuffer类都实现了一个CharSequence接口,日后一定要记住,如果看见了CharSequence最简单的理解做法就是传字符串,但是虽然这两个类是同一个接口的子类,不过这两个类对象之间却不能互相直接转型。
将String变为StringBuffer
方法一:直接利用StringBuffer类的构造方法,public StringBuffer(String str)
方法二:利用StringBuffer类的append()方法
将StringBuffer变为String,利用StringBuffer类的toString()方法完成
Runtime类
在每一个JVM进程之中,都会存在一个运行时的操作类的对象,而这对象所属的类型就是Runtime类。打开这个类的文档可以发现,在这个类之中并没有构造方法定义,可是按照之前所学,每个类至少有一个构造方法,而这个类的构造方法实际上存在只是不被外部看见而已,因为构造方法被私有化了,这是一个标准的单例设计模式,既然是单例设计模式则在这个类就一定会存在一个static型的方法,可以取得本类的实例化对象:public static Runtime getRuntime()。
而当取得了这个类的实例化对象之后,可以利用这个类取得一些JVM的信息,例如:
· 取得最大可用内存:public long maxMemory();
· 总共可以使用的内存:public long totalMemory();
· 空闲的内存:public long freeMemory()。
而当取得了这个类的实例化对象之后,可以利用这个类取得一些JVM的信息,例如:
· 取得最大可用内存:public long maxMemory();
· 总共可以使用的内存:public long totalMemory();
· 空闲的内存:public long freeMemory()。
System类
System类一直很熟悉,从未被了解,从最早的系统输出,后来的数组拷贝都属于System类的操作,下面来看一下数组排序的方法定义:
· 之前的格式:System.arraycopy(源数组名称,源数组开始点,目标数组名称,目标数组开始点,长度) ;
· System类定义:public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)。
在System类之中有一个取得当前日期时间的方法:public static long currentTimeMillis()。
· 之前的格式:System.arraycopy(源数组名称,源数组开始点,目标数组名称,目标数组开始点,长度) ;
· System类定义:public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)。
在System类之中有一个取得当前日期时间的方法:public static long currentTimeMillis()。
随机数类:Random
java.util.Random的主要目的是产生随机数,下面直接通过一个代码来观察就行
数学公式类:Math
在java.lang.Math类之中定义了所有的与数学有关的基本公式,在这个类之中所有的方法都是static型的方法,而在这个类只强调一个方法:round(),public static long round(double a),表示四舍五入。
大数字操作类
如果说现在有两个非常大的数字要进行数学操作,你们认为该怎么做?这个时候数字已经超过了double的范围,那么只能利用字符串来表示,取出每一位字符变为数字后进行数学计算,但是这种方式的难度较高,为了解决这样的问题,在Java里面提供了两个大数字操作类:java.math.BigInteger、java.math.BigDecimal,而这两个类是属于Number的子类。
大整数操作类:BigInteger
之前已经强调过了,如果数字较大,肯定按照String来处理,所以这一点可以通过BigInteger的构造方法来观察:
· 构造:public BigInteger(String val);
而且在BigInteger类之中定义了一些基本的数学计算:
· 加法:public BigInteger add(BigInteger val);
· 减法:public BigInteger subtract(BigInteger val);
· 乘法:public BigInteger multiply(BigInteger val);
· 除法(不保存余数):public BigInteger divide(BigInteger val);
· 除法(保存余数):public BigInteger[] divideAndRemainder(BigInteger val),数组第一个元素是商,第二个元素是余数;
· 构造:public BigInteger(String val);
而且在BigInteger类之中定义了一些基本的数学计算:
· 加法:public BigInteger add(BigInteger val);
· 减法:public BigInteger subtract(BigInteger val);
· 乘法:public BigInteger multiply(BigInteger val);
· 除法(不保存余数):public BigInteger divide(BigInteger val);
· 除法(保存余数):public BigInteger[] divideAndRemainder(BigInteger val),数组第一个元素是商,第二个元素是余数;
大小数操作类:BigDecimal
BigDecimal类表示的是大小数操作类,但是这个类也具备了与之前同样的基本计算方式,而在实际的工作之中,使用这个类最多的情况是进行准确位数的四舍五入操作,如果要完成这一操作需要关心BigDecimal类中的以下定义:
· 构造:public BigDecimal(double val);
· 除法:public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode);
· 进位模式:public static final int ROUND_HALF_UP。
· 构造:public BigDecimal(double val);
· 除法:public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode);
· 进位模式:public static final int ROUND_HALF_UP。
自由主题
收藏
0 条评论
下一页