java从入门到精通
2023-06-09 11:30:43 0 举报
AI智能生成
java
作者其他创作
大纲/内容
初始java
java简介
什么是java语言
Java是一种通过解释方式来执行的语言,是一种跨平台的程序设计语言,用Java语言编写的程序,可以运行在任何平台和设备上。
java的应用领域
java的版本
javaAPL文档
java语言特性
简单
面向对象
分布性
可移植性
解释性
安全性
健壮性
多线程
高能性
动态
搭建java语言环境
JDK下载
在Windows10系统下搭建JDK环境
解压缩
配置环境变量
熟悉Eclipse开发工具
熟悉Ecilpse
子主题
使用Ecilpse
子主题
程序调试
java语言基础
java主类结构
包声明
语句package Number为声明该类所在的包,package为包的关键字
声明成员变量和局部变量
通常将类的属性称为类的全局变量(成员变量),将方法中的属性称为局部变量。成员变量在类体中,局部变量在方法体中,都有各自的应用范围
编写主方法
main()是类体中的主方法从{开始}结束
public、static、void,分别是mian()的权限修饰符、静态修饰符、返回值修饰符,必须声明
String[ ] args是一个字符串类型的数组,是main()方法的参数
基本数据类型
整数类型
int型是java整数值的默认数据类型。当对多个尚未定义数据类型的整数做运算时,运算的结果将默认为int型
byte型的定义方式与int相同
shor型的定义方式与int相同
由于long型的取值范围比int型大,且属于高精度数据类型,所以在赋值时要和int型做出区分,需要在整数后加L或者l(小写的L)
浮点类型
用于存储含有小数部分的数值,若想使用float型小数,则需要在小数后面添加F或f
字符类型
char型用于储存单个字符,在定义字符型变量时,要以单引号表示
转义字符是一种特殊的字符变量,它以反斜杠“\”开头,后跟多个字符,将转义字符赋值给字符变量时,与字符常量值一样需要使用单引号
布尔类型
布尔类型逻辑只有“真”(true)和“假”(false)两个值
大写的Boolean是小写boolean的包装类
变量与常量
标识符和关键字
关键字是java语言中有特定意义的词,不可作为标识符使用。(在编译代码软件里,输入代码为彩色的都是关键字)
声明变量
声明常量
常量在整个程序中只能被赋值一次
变量的有效范围
成员变量
在类体中所声明的变量被称为成员变量,成员变量在整个类中都有效。
局部变量
只能在当前代码块中有效,局部变量与成员变量名相同时,成员变量被隐藏暂时失效,运行结果就会取就近原则
运算符
赋值运算符
号“=”表示,作用是将右方所含的值赋给左方,如果有两个以上的“=”运算符,会从最右方的“=”开始处理。
算数运算符
java中的算数运算符主要有+(加),-(减),*(乘),/(除),%(求余)
自增和自减运算符
符号在前先运算在使用,符号在后先使用在运算
变量名必须是合法的标识符,在声明变量时可以是没有赋值的
比较运算符
比较运算符用于程序中的信息之间的比较,当运算符对应的关系成立时,运算结果为true,否则为false,所有运算符通常作为判断的依据用在条件语句中。
逻辑运算符
位运算符
位运算符是完全针对位方面的操作,整数数据在内存中以二进制的形式表示,1位真(负),0为假(正)
三元运算符
运算符优先级
优先级由高到低的顺序:
数据类型转换
隐式类型转换(自动类型转换)
特点:一定不会丢失数据
显示类型转换(强制类型转换)
特点:有可能会丢失数据
当超出变量的取值范围时,会导致数据损失,如double类型转int类型,语法:(类型名)要转换的值
代码注释与编码规范
“//”为单行注释
“/**/”为多行注释
/** */“为文档注释
编程规范
流程控制
复合语句
由开括号”{“开始,闭括号"}"结束
条件语句
if条件语句
if条件语句是一个重要的编程语句,用于告诉程序在某个条件成立的情况下执行某段语句,而在另一种情况下执行另外的语句
if....else语句针对于某种条件有选择地做出处理,“如果满足某种条件,就进行某种处理,否则就进行另外一种处理
if...else if多分支语句用于针对某一事件的多种情况进行处理,“如果满足某种条件,就进行某种处理,否则如果满足另一个条件则进行另一种处理
switch条件语句
switch 语句首先计算表达式的值,如果表达式的计算结果和某个 case 后面的常量值相同,则执行该 case 语句后的若干个语句直到遇到 break 语句为止。此时,如果该 case 语句中没有 break 语句,将继续执行后面 case 中的若干个语句,直到遇到 break 语句为止
检测一个变量是否符合某个条件,如果不符合,再用另外一个检测,以此类推
循环语句
while循环语句
是条件判断语句,当表达式的返回值为真是,则执行语句,重新判断条件表达式的返回值,知道返回值的结果为假时,退出循环
do......while循环语句
与while循环语句相似,区别在于while语句先判断条件是否成立再执行循环体,do...while循环语句则先执行溢出循环后,再判断条件是否成立
子主题
子主题
for循环语句
可以用来重复执行某条语句,直到某个条件得到满足
子主题
子主题
循环控制
break语句
跳出当前循环
子主题
子主题
continue语句
跳出本次循环
子主题
子主题
数组
数组概述
数组是具有相同数据类型的一组数据的集合
一维数组
一维数组是一组相同类型数据的线性集合
创建一维数组
先声明,再用new关键字进行内存分配
再声明的同时为数组分配内存
初始化一维数组
数组与基本数据类型一样可以进行初始化操作,数组的初始化可分别初始化数组中的每个元素
二维数组
二维数组可以看作是特殊的一维数组
创建二维数组
先声明,再用new关键字进行内存分配
声明的同时为数组分配内存
初始化二维数组
与初始化一维数组相似
语法:type arrayname[][]={value1,value2,...,valuen}
语法:type arrayname[][]={value1,value2,...,valuen}
数组的基本操作
遍历数组
遍历数组就是获取数组中的每个元素,通常使用for循环来实现,遍历二维数组需要使用双层for循环,通过数组的length属性可获取数组的长度。
填充替换数组元素
数组中的元素定义完成后,通过Arrays类的静态方法fill()来对数组中的元素进行替换
替换数组元素:Arrays.fill(数组名,值); 该方法可将指定的int值分配给int型数组的每个元素
替换数组元素:Arrays.fill(数组名,值); 该方法可将指定的int值分配给int型数组的每个元素
替换数组部分元素:Arrays.fill(数组名,值);该方法可将指定的int值分配给int型数组指定范围内的每个元素
口诀:前改后不改
口诀:前改后不改
对数组进行排序
通过Arrays类的静态方法sort()可以实现对数组的排序
复制数组
复制数组元素:Arrays.copyof(旧数组名,新数组长度);
口诀:空位补0,溢出去掉
口诀:空位补0,溢出去掉
子主题
复制数组部分元素:Arrays.copyof(旧数组名,前索引,后索引);
口诀:前在后不在
口诀:前在后不在
子主题
查询数组
查询数组元素:Arrays.binarySearch(数组名,元素)
口诀:先排序在查询
口诀:先排序在查询
子主题
查询指定范围内数组元素:Arrays.binarSearch(数组名,前索引,后索引,元素)
口诀:先排序在查询,前含后不含
口诀:先排序在查询,前含后不含
子主题
数组排序算法
冒泡排序
冒泡排序的基本思想是比较相邻的元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把较大的元素移动到数组后面(也就是交换两个元素的位置),这样较小的元素就像气泡一样从底部上升到顶部
直接选择排序
每一趟从待排序的数据元素中选出最小(最大)的一个元素,顺序地放在已排好序的数列的最后,直到全部待排序的数据元素排完
反转排序
把数组最后一个元素与第一个元素替换,倒数第二个元素与第二个元素替换,以此类推,直到把所有数组元素反转替换
类和对象
面向对象概述
对象
静态部分:就是不能动的部分,称为“属性”
动态部分:即对象可执行的动作,称为“行为”
动态部分:即对象可执行的动作,称为“行为”
类
类就是对象的设计图,是同一类事物的统称,如果将现实世界中的一个事物抽象成对象,类就是这类对象的统称
封装
封装是面向对象编程的核心思想,将对象的属性和行为封装起来,其载体就是类
就是把对像的属性隐藏在对象内部,不允许外部对象直接访问内部信息
就是把对像的属性隐藏在对象内部,不允许外部对象直接访问内部信息
继承
继承性主要利用特定对象之间的共有属性,一个类处于继承体系中,它既可以是其他类的父类,为其他类提供属性和行为,也可以是其他类的子类,继承父类的属性和方法
多态
表示一个对象多种形态,将父类对象应用于子类的特征就是多态
类
成员变量
对象的属性也称为成员变量,成员变量可以是任意类型,整个类中均是成员变量作用范围
成员方法
使用成员方法对应于类对象,包含getter和setter两种方法
权限修饰符
局部变量及其有效范围
局部变量是在方法被执行时创建,在方法执行结束时被销毁,局部变量在使用时必须进行赋值或被初始化,否则会出现编译错误
局部变量的有效范围称为变量的作用域,局部变量的有效范围从该变量的声明开始到该变量的结束为止
this关键字
this关键字用于表示本类当前的对象,当前对象不是某个new出来的实体对象,而是当前正在编辑的类,thia关键字只能在本类中使用,也就是说this是自身的一个对象,代表对象本身
"this ."是这个类的意思,可以调用成员变量和成员方法
"this ."是这个类的意思,可以调用成员变量和成员方法
类的构造方法
构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的,每当类实列化一个对象时,类都会自动调用构造方法
静态变量和静态方法
由static修饰的变量和方法被称为静态变量和静态方法,被声明为static的变量和方法被称为静态成员,静态成员归类所有,区别于个别对象,可以在本类或其他类使用类名和 “ . ” 运用符调用静态成员
static修饰只要有类名就可以使用,没有对象也可以使用
子主题
类的主方法
特点: 主方法是静态的,所以如要直接在主方法中条用其他方法,则该方法必须也是静态的。
主方法没有返回值。
主方法的形参为数组。其中,args[0]~[n]分别代表程序的第一个参数到n个参数,可以使用args.length获取参数的个数
主方法没有返回值。
主方法的形参为数组。其中,args[0]~[n]分别代表程序的第一个参数到n个参数,可以使用args.length获取参数的个数
对象
创建
对象可以认为是在一类事物中抽象出某一个特列,可以通过这个特例来处理这类事物出现的问题,在Java语言中通过new操作符来创建对象
访问属性和行为
用户使用new操作服创建一个对象后,可以使用对象点类成员来获取对象的属性和行为,对象的属性和行为在类中是通过类的成员变量和成员方法的形式来表示的,所以当对象获取类成员时,也相应的获取了对象的属性和行为
引用
尽管一切都可以看作对象,但真正的操作标识符实质上是一个引用
销毁
对象引用超过其作用范围,这个对象将被视为垃圾
将对象赋值为null(对象被制为NLP,值时将消亡
将对象赋值为null(对象被制为NLP,值时将消亡
继承、多态、抽象类与接口
类的继承
在Java语言中每个类只能继承一个父类(单继承)
运行时会把父类、子类都执行,会先执行父类,再执行子类
Object类
Object类是所有类的父类,在Object类中,主要包括clone(),finalize(),equals(),toString()等方法
getClass()方法
子主题
toString()方法:
to String()的功能是加一个对象返回为字符串形式,它会返回一个String实例,在实际的应用中通常写to String()方法,为对象提供一个特定的输出模式。当这个类转换为字符串或与字符串连接时,将自动调用重写的to String()方法
to String()的功能是加一个对象返回为字符串形式,它会返回一个String实例,在实际的应用中通常写to String()方法,为对象提供一个特定的输出模式。当这个类转换为字符串或与字符串连接时,将自动调用重写的to String()方法
equals()方法:
在java语言中,有两种比较对象的方式,分别为q运算符与equals()方法,两者的区别在于:
“==”比较的是两个对象引用内存地址是否相同,而equals()方法比较的是两个对象的实际内容
在java语言中,有两种比较对象的方式,分别为q运算符与equals()方法,两者的区别在于:
“==”比较的是两个对象引用内存地址是否相同,而equals()方法比较的是两个对象的实际内容
对象类型的转换
向上转型(自动类型转换)
向下转型(强制类型转换)
父类对象不能直接赋予子类对象
方法的重写
返回参数相同,方法名相同,传入参数相同,只有方法体不同
使用instanceof关键字判断对象类型
方法的重载
方法名相同 参数不同(返回参数不同,传入参数不同)
final关键字
final变量
final关键字用于变量声明,一旦该变量被设定,就不可以在改变该变量的值,final关键字定义的变量必须在声明时对其进行赋值操作
final修饰变量——不能被改变(常量)
final方法
可以防止子类修改父类的定义与现实方法,执行效率高于非final方法
final修饰方法—— 不能被重写
final类
使用final类可以使该类不被任何类继承,并且不允许其他人对这个类进行任何改动
Final修饰类——不能 被继承
多态
继承父类所形成的多种结果,使用多个方法、变量、类,只要结果不同就是多态
利用多态可以使程序具有良好的扩展性,并可以对所有类对象进行通用的处理
利用多态可以使程序具有良好的扩展性,并可以对所有类对象进行通用的处理
子主题
抽象类与接口
抽象类
没有方法体,用abstract修饰,用“ ;”结尾,有抽象方法的类一定是抽象类
子类继承父类,如果父类是抽象类,子类是普通类,那么子类不能继承父类的抽象方法,只有通过重写才可以使普通子类继承抽象类父类
接口
接口是抽象类的延申,接口中的所有方法都没有方法体
一个类所有方法都是抽象方法,java语言是单继承,使用接口就可以实现多重继承
接口使用interface关键字进行定义
一个类所有方法都是抽象方法,java语言是单继承,使用接口就可以实现多重继承
接口使用interface关键字进行定义
实现implements关键字,Java语言每个类可以实现多个接口
包和内部类
Java包装包
类名冲突
java中每一个接口或类都来自不同的类包,这个类包包含了一些类和接口,为了使两个同名的类文件的功能使用,需要将两个类放置在不同的类包中
完整的类路径
一个完整的类名需要包名和类名的组合,每个类都隶属于一个类包,只要保证同一类包中的类不同名,就可以有效的避免同名类冲突的情况
创建包
新建一个名为Ecilpse的文件,在Ecilpse中创建包,在项目src上右击,新建,选择package(包)命令
导入包
使用import关键字导入包
在使用import关键字时,可以加上指定类的完整描述,如果为了使用包中更多的类,可以在使用import关键字指定时在包指定后加上*,这表示可以在程序中使用该包的所有类。
使用import导入静态成员
import关键字除导入包外,还可以导入静态成员
作用:导入静态成员变量可以使编程更为方便
内部类
成员内部类
成员内部类简介
在一个类中使用内部类,可以在内部类中直接存取其所在类的私有成员变量。
成员内部类不止可以在外部类中使用,在其他类中也可以使用,在其他类中创建内部类对象的语法非常特殊
使用this方法关键字获取内部类与外部类的引用
如果在外部类中定义的成员变量与内部类的成员变量名称相同,可以使用this关键字 如果在内部类与外部类的成员变量重名的情况,可以使用this关键字进行处理
匿名内部类
匿名内部类是只在创建对象时才会编写的一种写法,其特点是“现用现写”
使用匿名类时应遵循以下原则:
匿名类不能写构造方法
匿名类不能定义静态的成员
如果匿名类创建的对象没有赋值给任何引用变量,会导致该对象用完一次就会被java虚拟机销毁
匿名类不能写构造方法
匿名类不能定义静态的成员
如果匿名类创建的对象没有赋值给任何引用变量,会导致该对象用完一次就会被java虚拟机销毁
异常处理
异常概述
在程序运行时可能出现的一些错误被称为异常,异常是一个在程序中执行期间发生的事件,它中断了正在执行的程序的正常指令流
系统不在执行下去,提前结束,这种情况就是异常
异常的抛出与捕捉
抛出异常
异常抛出后,如果不做出任何处理,程序就会被终止
捕捉异常
java语言的异常捕捉结构由try、catch和finally3部分组成,其中,try语句块存放的是可能发生异常的Java语句:catch语句块在try语句块之后,用来激发捕捉的异常: finally语句块是异常处理结构的最后执行部分,无论try语句块中的代码如何退出,都执行finally语句块
通过异常处理器的语法可知,异常处理器大致分为try—catch语句块和finally语句块
try—catch语句块
程序仍然输出最后的提示信息,没有因为异常而终止
finally语句块
完整的异常处理语句一定要包含finally语句,无论程序中有无异常发生,并且无论之前的try-catch语句块是否顺利执行完毕,都会执行finally语句。
在以上4中特殊情况下,finally块不会被执行
Java常见的异常类
自定义异常
使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户只需继承Exception类即可自定义异常类
要使用自定义异常类,大体分为以上几个步骤:
在方法中抛出异常
使用throws关键字抛出异常
使用throws关键字将异常抛给上一级后,如果不想处理该异常,可以继续向上抛出,但最终要有能够处理该异常的代码
使用throw关键字抛出异常
throw关键字通常用于方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即终止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代码中捕获并处理异常则需要在抛出异常的方法中使用throws关键字在方法的声明中指明要抛出的异常;如果要捕捉throw抛出的异常则,必须使用try-catch语句块
由于Exception是所有异常类的父类,如果将catch(Exception)语句块放在其他两个语句块前面,后面的语句块将永远得不到执行,也就无意义了,所以catch语句的顺序不可调换
异常的使用规则
异常处理不应用来控制程序的正常流程其主要作用是捕获程序在运行时发生的异常并进行相应的处理
处理异常时可遵行以上几条原则:
字符串
String
声明字符串
字符串常量可以是系统能够显示的任何文字信息,甚至能够显示的任何文字信息,甚至可以是单个字符串
在Java语言中,字符串必须包含在一对(“ ”)之内
声明字符串变量
创建字符串
在Java语言中,将字符串作为对象来处理,因此可以像创建其他类对象一样来创建字符串对象。创建对象要使用类的构造方法
string类的常用构造方法:
连接字符串
连接多个字符串
使用“+”运算符可实现连续多个字符串的功能。“+”运算符可以连接多个string对象并产生一个新的对象string对象
连接其它数据类型
字符串也可同其他基本数据类型进行比较,如果将字符串同其他数据类型进行连接,会将其他数据类型的数据直接转换成字符串
获取字符串信息
获取字符串长度
使用string类的length()方法可获取声明的字符串对象的长度
字符串查找
indexOf(string s)方法
该方法用于返回参数字符串S在指定字符串中首次出现的索引位置,当调用string类的indexOf()方法时,会从当前字符串的开始位置搜索S的位置,如果没有检索到字符串S该方法的返回值是-1
lastindexOf(string str)方法
该方法用于返回指定字符串最后一次出现的索引位置。当调用string类的lastIndexOf()方法时,会从当前字符串的开始位置检索数字字符串str,并将最后一次出现在str的索引位置返回,如果没有检索到字符串str该方法返回-1
获取指定索引位置的字符
字符串操作
获取子字符串
substring(int beginlndex)方法
该方法返回值的是从指定的索引位置开始截取直到该字符串结尾的子串
substring(int beginlndex,int endlndex)方法
该方法返回的是从字符串某一索引位置开始截取至某一索引位置结束的子串
去除空格
trim()方法返回字符串的副本,忽略前导空格和尾部空格
字符串替换
replace()方法可实现将指定的字符或字符串替换成新的字串或字符串
replace()方法返回的结果是一个新的字符串。如果字符或字符串oldChar没有出现在该对象表达式中的字符串序列中,则将原字符串返回
判断字符串的开始与结尾
startsWith()方法
该方法用于判断当前字符串对象的前缀是否为参数指定的字符串
endsWith()方法
该方法用于判断当前字符串是否为以给定的子字符串结束
判断字符串是否相等
equals()方法
如果两个字符串具有相同的字符和长度,则使用equals0方法进行比较时,返回 true。否则false
equalslgnoreCase()方法
使用equals0方法对字符串进行比较时是区分大小写的,而使用equalsIgnoreCase0方法是在!大小写的情况下比较两个字符串是否相等,返回结果仍为 boolean 类型
按字典顺序比较两个字符串
compareTo0方法为按字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode 值,按字典顺序将 String对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数;如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数;如果这两个字符串相等,则结果为 0
字母大小写转换
String 类的 toLowerCase0方法可将字符串中的所有大写字母改写为小写字母,而 toUpperCase0方法可将字符串中的所有小写字母改写为大写字母。
toLowerCase()方法
该方法将字符串中的所有大写字母转换为小写。如果字符串中没有应该被转换的字符,则将原符串返回:否则将返回一个新的字符串,将原字符串中每个大写字母都转换成小写,字符串长度不变
toUpperCase()方法
该方法将字符串中所有的小写字母转换为大写。如果字符串中没有应该被转换的字符,则将原符串返回;否则返回一个新字符串,将原字符串中每个小写字母都转换成大写,字符串长度不变
字符串分割
使用split0方法可以使字符串按指定的分割字符或字符串进行分割,并将分割后的结果存放在字符串数组中
split(String sign)方法
该方法可根据给定的分割符对字符串进行拆分
split(String sign,int limit)方法
该方法可根据给定的分割符对字符串进行拆分,并限定拆分的次数
格式化字符串
日期与时间字符串格式化
日期格式化
frmat方法通过给定的特殊转换符作为参数来实现对日期时间的格式化。
时间格式化
使用format0方法不仅可以完成日期的格式化,也可以实现时间的格式化。时间的格式化转换符要比日期的格式化转换符影多、更精确,它可以将时间格式化为时、分、秒、毫秒等
格式化常见的日期时间组合
格式化日期与时间组合的转换符定义了各种日期时间组合的格式
常规类型格式化
常规类型格式化可应用于任何参数类型
使用正则表达式
正则表达式通常被用于判断语句中,用来检查某一字符串是否满足某一个格式。正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的云字符
字符串生成器
append()方法
该方法用于向字符串生成器中追加内容。通过该方法的多个重载形式,可实现接受任何类型的数据,如int、boolean、char、String、double 或者另一个字符串生成器等
insert(int offset, arg)方法
该方法用于向字符串生成器中的指定位置插入数据内容。通过该方法的不同重载形式,可实现向字符串生成器中插入 int、float、char 和 boolean 等基本数据类型的数据或其他对象
delete(int start , int end)方法
移除此序列的子字符串中的字符。该子字符串从指定的 start 处开始,一直到索引 end-1 处的字符
如果不存在这种字符,则一直到序列尾部。如果 stat 等于 end,则不发生任何更改
如果不存在这种字符,则一直到序列尾部。如果 stat 等于 end,则不发生任何更改
常用类库
包装类
Integer类
Integer 类在对象中包装了一个基本数据类型 int 的值,该类的对象包含一个 int 类型的字段。此外该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,同时还提供了其他一些处理 int 类时非常有用的常量和方法
Double类
Double 类和 Float 类是对 double、float 基本类型的封装,它们都是 Number 类的子类,都是对数进行操作,所以常用方法基本相同
Double类在对象中包装一个基本类型为 double 的值,每个 Double 类的对象都包含一个doublez的字段。此外,该类还提供多个方法,可以将 double 类型转换为 String 类型,将 String 类型转换为do类型,也提供了其他一些处理 double 类型时有用的常量和方法
Double类在对象中包装一个基本类型为 double 的值,每个 Double 类的对象都包含一个doublez的字段。此外,该类还提供多个方法,可以将 double 类型转换为 String 类型,将 String 类型转换为do类型,也提供了其他一些处理 double 类型时有用的常量和方法
Boolean类
Boolean 类将基本类型为 boolean 的值包装在一个对象中。一个 Boolean 类型的对象只包含一个类型为 boolean 的字段。此外,此类还为 boolean 类型和 String 类型的相互转换提供了许多方法,并提供了处理 boolean 类型时非常有用的其他一些常量和方法
Character类
Character 类在对象中包装一个基本类型为char 的值,该类提供了多种方法,以确定字符的类别(写字母、数字等),并可以很方便地将字符从大写转换成小写,反之亦然
Number类
对于数值型的包装类,它们有一个共同的父类——Number类,该类是一个抽象类,它是Byte、Integer、Short、Long、Float、和Double类的父类,其子类必须提供将表示的数值转换为byte、int、short、long、、float 和 double 的方法
数字处理
数字格式化
数字格式化主要针对的是浮点型数据
使用DecimalFormat 类进行格式化操作
DecimalFormat 类是 NumberFormat 的一个子类,用于格式化十进制数字。它可以将一些数字格式化为整数、浮点数、百分数等。通过使用该类可以为要输出的数字加上单位或控制数字的精度。一般情况下,可以在实例化 DecimalFormat 对象时传递数字格式,也可以通过 DecimalFormat 类中的applyPatter0方法来实现数字格式化。
当格式化数字时,可在 DecimalFormat 类中使用一些特殊字符构成一个格式化模板,使数字按照-定的特殊字符规则进行匹配。
DecimalFormat 类是 NumberFormat 的一个子类,用于格式化十进制数字。它可以将一些数字格式化为整数、浮点数、百分数等。通过使用该类可以为要输出的数字加上单位或控制数字的精度。一般情况下,可以在实例化 DecimalFormat 对象时传递数字格式,也可以通过 DecimalFormat 类中的applyPatter0方法来实现数字格式化。
当格式化数字时,可在 DecimalFormat 类中使用一些特殊字符构成一个格式化模板,使数字按照-定的特殊字符规则进行匹配。
Math类
Math 类提供了众多数学函数方法,主要包括三角函数方法,指数函数方法,取整函数方法,取最大值、最小值,以及平均值函数方法。这些方法都被定义为 static 形式,所以在程序中应用比较简便。
语法:Math.数学方法
在Math 类中,除函数方法外还存在一些常用数学常量,如 PI、E等。这些数学常量作为 Math 类的成员变量出现,调用起来也很简单。
语法:Math.PI
Math.E
Math 类中的常用数学运算方法较多,大致可以将其分为四大类别,分别为三角函数方法,指数函数方法,取整函数方法,以及取最大值、最小值和绝对值函数方法
语法:Math.数学方法
在Math 类中,除函数方法外还存在一些常用数学常量,如 PI、E等。这些数学常量作为 Math 类的成员变量出现,调用起来也很简单。
语法:Math.PI
Math.E
Math 类中的常用数学运算方法较多,大致可以将其分为四大类别,分别为三角函数方法,指数函数方法,取整函数方法,以及取最大值、最小值和绝对值函数方法
三角函数方法
以上每个方法的参数和返回值都是 double 型的。将这些方法的参数的值设置为 double 型是有一定道理的,参数以弧度代替角度来实现,其中 1°等于 /180 弧度,所以 180°可以使用弧度来表示。除了可以获取角的正弦、余弦、正切、反正弦、反余弦、反正切,Math 类还提供了角度和弧度相互转换的方法 toRadians0和 toDegrees0。但需要注意的是,角度与弧度的转换通常是不精确的
指数函数方法
指数运算包括求方根、取对数以及求 n 次方的运算
取整数函数方法
子主题取最大值、最小值、绝对值函数方法
Random类
Random 类是 JDK 中的随机数生成器类,可以通过实例化一个 Random 对象创建一个随机数生器
在实例化 Random 类对象时,设置随机数生成器的种子
获取各种数据类型随机数的常用方法
BigInteger类
BigInteger 类的数字范围较Iteger 类的数字范围要大得多。Integer 类是 int 的包装类,int 的最大值为 ,如果要计算更大的数字,使用 Integer 类就无法实现了,所以 Java 中提供]BigInteger 类来处理更大的数字。BigInteger 类支持任意精度的整数,也就是说,在运算中 BigInteg类可以准确地表示任何大小的整数值而不会丢失信息。
在 BigInteger 类中封装了多种操作,除了基本的加、减、乘、除操作,还提供了绝对值、相反数最大公约数以及判断是否为质数等操作。
使用 BigInteger 类,可以实例化一个 BigInteger 对象,并自动调用相应的构造函数。BigInteger类具有很多构造函数,但最直接的一种方式是参数以字符串形式代表要处理的数字
在 BigInteger 类中封装了多种操作,除了基本的加、减、乘、除操作,还提供了绝对值、相反数最大公约数以及判断是否为质数等操作。
使用 BigInteger 类,可以实例化一个 BigInteger 对象,并自动调用相应的构造函数。BigInteger类具有很多构造函数,但最直接的一种方式是参数以字符串形式代表要处理的数字
一且创建了对象实例,就可以调用 BigInteger 类中的一些方法进行运算操作,包括基本的数学运算和位运算以及一些取相反数、取绝对值等操作
Biglnteger类中常用的几种运算方法
BigDecimal类
BigDecimal类和 BigInteger 类都能实现大数字的运算,不同的是 BigDecimal类加入了小数的概念般的 float 型和 double 型数据只可以用来做科学计算或工程计算,但由于在商业计算中要求数字精度比较高,所以要用到 BigDecimal类。BigDecimal类支持任何精度的定点数,可以用它来精确计算货币值
BigDecimal 类型的数字可以用来做超大的浮点数的运算,如加、减、乘、除等,但是在所有的运算中除法是最永的,因为在除不尽怖况下商小数点后的末位的处理是需要考虑的
BigDecimal 类中 divide0方法有多种设置,用于返回商小数点后的末位的处理
System类
System类是JDK 中提供的系统类,该类是用fial 修饰的,所以不允许被继承。System 类提供了很多系统层面的操作方法,并且这些方法全部都是静态的
控制台输出字符
System 类提供了标准输入、标准输出和错误输出流,也就是说,System 类提供了3 个静态对象:in、out 和 err。本书中的代码多次使用了这些对象,最常见的就是 out 对象
不会自动换行的 print()方法
可以自动换行的 println()方法
计时
System.currentTimeMillis0方法可以获取自 1970年1月1日零点至的毫秒数。虽然 Date 日期类也有类似的方法,但代码会比 System 类多,所以 SystemcurrentTimeMillis0方法是为获取当前毫秒数最常用的方法。因为该方法的返回值精确到毫秒,所以可以利用该方法来记录程序的运行时间
Scanner类
与C 语言不同,Java 从控制台中读出用户输入的值,用到的不是一行可以直接使用的代码,而是由一个叫 Scanner 的类来实现的。Scanner 英文直译就是扫描仪,它的用途就和现实生活的扫描仪一样.可以把数字化信息流转为人类可识别的文字。控制台输出内容用到了 System.out 就表示向控制台输出System.in 就表示从控制台输入,让 Scanner 扫描Systemin 就可以获取用户输入的值了
日期时间类
Date类
Date 类用于表示日期时间,使用该类表示时间需要使用其构造方法创建对象
日期时间格式化
DateFormat 类是日期时间格式化子类的抽象类,可以按照指定的格式对日期或时间进行格式化。DateFormat类来实现类似的功能
DateFormat 类提供了很多类方法,以获得基于默认或给定语言环境和多种格式化风格的默认日期时间Formatter,格式化风格主要包括SHORT、MEDIUM、LONG和FULL4种:
使用 DateFormat类还可以自定义日期时间的格式
要格式化一个当前语言环境下的日期,首先需要创建 DateFormat类的一个对象,由于它是抽象类,因此可以使用其静态方法 getDateImstance0进行创建
使用getDateInstance0方法获取的是所在国家或地区的标准日期格式。另外,DateFormat类还提供了一些其他静态方法。例如,使用 getTimenstance0方法可获取所在国家或地区的时间格式,使getDateTimeInstance0方法可获取日期和时间格式
Calendar类
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY OF MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(如获得下星期的日期)提供了一些方法。另外,该类还为实现包范围外的具体日历系统提供了其他字段和方法,这些字段和方法被定义为 protected。Calendar 提供了一个类方法 getInstance0,以获得此类型的一个通用的对象
Runyime类
Rumntime 类是DK 提供的运行时类,该类为Java 序提供了与当前运行环境相连接的一个通Java 程可以利用该类对当的运行环境执行一些简单的操作。Runtime 类不能使用 new 关键字创实例,只能通过RuntimegetRuntime0方法获取实例
执行本地命令
Runtime 类提供exec0方法让 Java代码可以执行系统的命令,exec0方法有很多重载的形式
查看内存
Runtime 类可以通过 freeMemory0方法查看当前Java 虚拟机可用内存的剩余量。如果程序能够实时监控内存剩余量,就可以尽量控制程序对内存的占用,c从而避免出现“内存溢出”的情况。同样,也可以用来对测试程序性能,检验程序算法是否导致内存紧张
子主题
收藏
收藏
0 条评论
下一页