Java从入门到精通
2023-06-09 10:31:27 60 举报
AI智能生成
Java1到11章复习
作者其他创作
大纲/内容
初识Java
Java介绍
Java是一门面向对象编程语言,不仅吸收了C语言的各种优点,还摒弃了C里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 [1] 。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 [2] 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 [3]
Java语言的特性
面向对象<br>面向对象是Java语言的基础,也是Java语言的重要特性,它本身就是一种纯面向对象的程序设计语言。Java 提倡万物皆对象,语法中不能在类外面定义单独的数据和函数也就是说,Java 语言最外部的数据类型是对象,所有的元都要通过类和对象来访问。
分布性<br>Java的分布性包括操作分布和数据分布,其中操作分布是指在多个不同的主机上布置相关提作。而数据分布是将数据分别存放在多个不同的主机上,这些主机是网络中的不同成员。Java 可以凭借URL (统资源定位符) 对象访问网络对象,访问方式与访问本地系统相同。
可移植性<br>Java程序具有与体系结构无关的特性,可以非常方便地移植到网络上的不同计算机中。同时,Java的类库也实现了针对不同平台的接口,使得这些类库也可以被移植
解释型<br><br>运行Java程序需要解释器。任何移植了Java 解释器的计算机或其他设备都可以用Java字节码进<br>行解释执行。字节码独立于平台,它本身携带了许多编译时的信息,使得连接过程更加简单,开发过<br>程更加迅速,更具探索性。
安全性<br>Java语言取消了类C语言中的指针和内存释放等语法,有效地避免了用户对内存的非法操作。Java程序代码要经过代码校验、指针校验等很多测试步骤才能够运行,所以未经允许的Java程序不可能运行,也不可能出现损害系统平台的行为,而且使用Java 可以编写出防病毒和防修改的系统。
健壮性<br>Java语言的设计目标之一,是能编写出多方面、 可靠的应用程序。因此,Java 会检查程序在编译<br>和运行时的错误,并消除错误。类型检查能帮助用户检查出许多在开发早期出现的错误,集成开发工具(如Eclipse、NetBeans )的出现也使得编译和运行Java程序更加容易。
多线程<br>Java语言支持多线程机制,能够使应用程序在同一时间并行执行多项任务,而且相应的同步机制可以保证不同线程能够正确地共享数据。使用多线程,可以带来更好的交互能力和实时行为。
高性能<br>ava 编译后的字节码是在解释器中运行的,所以它的速度较多数交互式应用程序提高了很多。另外,字节码可以在程序运行时被翻译成特定平台的机器指令,从而进一步提高运行速度。
动态<br>Java在很多方面比C和C++更能够适应发展的环境,可以动态调整库中方法和增加变量,而客户端却不需要任何更改。在Java中进行动态调整是非常简单和直接的。
搭建Java环境
熟悉Eclipse开发工具
熟悉Eclipse
使用Eclipse
概述Eclipse开发工具
Eclipse由IBM公司投资4000万美元开发而成,它基于Java语言编写,是目前最流行的Java集成开发工具之一。Eclipse 所有代码都是开源的,可扩展,其后续开发由Eclipse联盟负责。<br>Eclipse为编程人员提供了-流的Java程序开发环境,它的平台体系结构是在插件概念的基础上构建的,插件是Eclipse平台最具特色的特征之一, 也是其区别于其他开发工具的
Java语言基础
Java主类的结构
doyble语句<br>以doyble语句定义一个身高变量。在定义一个体重变量。在exponent装入计算公式。<br>再分别输出身高 ,体重 ,指数 ,一个判断。<br>1;判断结果是否大于18.5如果为真输入体重过轻,如果为假跳到下一个判断。<br>2;判断如果是否等于18.5或小于24.9,为真输出正常范围,如果为假跳到下一个判断。<br>3;判断是否大于24.9或小于29.9,为真输入体重过重,如果为假跳到下一个判断。<br>4;判断是否大于或等于29.9为真输出肥胖。<br><br>
boolean语句 以boolean语句定义b1并赋值'true'<br>再以boolean语句定义b2并赋值’FALSE'进行输出
char语句<br>以char语句定义c1类型数据,并且赋值’\\‘<br>再以以char语句定义c2类型数据。并且赋值'u2605'<br>并进行输出
变量与常量
变量
在程序运行期间,随时可能产生一些临时数据,应用程序将这些程序保存在一些内存单元中,每个内存单元都用一个标识符来标识,这些内存单元我们称之为变量,定义的标识符就是变量名。<br>变量的数据类型:在定义变量是必须声明变量的类型,在为变量赋时必须赋予和变量同一类型的值,否则程序会报错。<br>整数类型变量;用来储存整数数据,既没有小数部分的值。<br>整数类型变量分为4种的类型:字符型(byte),短整型(short),整型(int),和长整型(long).<br>浮点数类型变量;浮点数类型变量用来储存小数数值。<br>浮点数类型分为俩种:单精度浮点型(float),双精度浮点型(double)。double型<br>所表示的比float型更精确。<br>字符型变量;用于储存一个单一字符,在Java重用char表示。char类型的字符变量都会占用2个字符,赋值时,要用英文半角格式的单引号('')把字符括起来。<br>布尔类型变量;布尔类型变量用来储存布尔值,在Java中用boolean表示,该类型的变量只有两个值,即true和false.<br><br>
常量
常量就是在程序中固定的值,就是不变的数。<br>在Java中,常量包括整型常量,浮点型常量,布尔常量,字符型常量等。<br>整型常量;整型常量是整数类型的数据。<br>浮点型常量;浮点型常量就是在数学中的小数。<br>布尔常量;布尔常量即布尔型的两个值true和false,该常量用于区分一个事物的真和假。<br>字符型常量;字符型常量用于表示一个字符。一个字符常量要用一对英文半角格式的单引号('')引起了,它可以使英文字母,数字,标点符号,以及由转一序列来表示的特殊符号。<br>字符串常量;字符串常量用于表示一串连续字符。一个字符串常量要用一对英文半角格式的双引号("")引起了。<br>null常量;null厂里只有一个值null,表示对象的引为空。<br>
运算符
赋值运算符;赋值运算符以符号'='表示<br>
赋值运算符;赋值运算符以符号'='表示
自增和自减运算符;自增,自减运算符是单目运算符,可以放在操作元之前和操作元之后。
数据类型转换
自动类型转换
也叫隐式类型转换,指的是两种数据类型在转换的过程中不需要显式地进行声明。<br>要实现自动类型转换,必须同时满足两个条件。<br>第一是两种数据类型彼此兼容,<br>第二是目标类型的取值范围大于源类型的取值范围。
强制类型转换
整数类型之间可以实现转换,如byte类型 的数据可以赋值给short、int、 long类 型的变量,short、 chaf类型 的数据可以赋值给int、long类型的变量,int类 型的数据可以赋值给long类型的变量。
流程控制
复合语句
Java语言的复合语句是一整个快区为单位的语句,复合语句由开括号“{”开始,闭括号“}”结束。
条件语句
if条件语句
简单的if语句 :语法时 if(布尔表达式){ 语句序列}
if....else语句:语法是 if(条件表达式){语句序列1}else{语句序列2}
if....else if语句 :语法是 if(条件表达式1){语句序列1}else if(条件表达式2){语句序列2}。。。。。。else if(语句表达式n){语句序列n}<br>
swtich多分支语句
循环语句
while循环语句
do...while循环语句
for循环语句
循环控制
break语句
continue语句
数组
一维数组
创建一维数组
先声明,在用new关键字进行内存分配。声明一维数组有两种方式;数组元素类型 数组名字[]; 数组元素类型[] 数组名字;
初始化一维数组
数组的初始化有两种方式: int arr[] =new int[] {1,2,3,5,25}; intarr2 ={34,23,12,6};
使用一维数组
先声明,在用new关键字进行内存分配。声明一维数组有两种方式;数组元素类型 数组名字[][]; 数组元素类型[][] 数组名字;
二维数组
创建二维数组
初始化二维数组
二位数组的初始化和一维数组初始化类似,同样可以使用大括号完成。语法是 type arryname[][] ={value,value2......valuen};
使用二维数组
数组的基本操作
数组元素替换
替换数组元素;<br>Arrays.fill(数组名,值);<br>替换数组部分元素;前改后不改<br>Arrays.fill(数组名,前索引,后索引,值);
对数组进行排序
数组元素排序;<br>arrays sort(数组名)<br>查询数组;先排序再查询<br>
复制数组
复制数组元素;空位补零溢出去掉<br>新数组名 =Arrays.copyof(旧数组名,新数组长度);<br>复制数组元素;前在后不在<br>新数组名 =Arrays.copyof(旧数组名,前索引,后索引);
查询数组
查询数组;先排序再查询<br> 索引=Arrays,binary.Searth(数组名,值)<br>查询数组;先排序再查询,前含后不含<br> 索引=Arrays,binary.Searth(数组名,前索引,后索引,值)
数组的排序算法
冒泡排序
排序数组元素的过程是将较小的数往前放 ,较大的往后放。
直接选择排序
选择其中最大的一个往后放一直循环
反转排序
把所有数组的顺序反转
类和对象
类
不能讲一个事物描述成一类事物,就比如说一只鸟不能称之为鸟类。但如果要给某一类事物一个统称,就需要类这个概念。
成员变量
对象的属性也称之为成员变量,成员变量可以是任意类型,整个类中均都是成员变量作用的范围。
成员方法
成员方法的语法格式; 权限修饰符 返回值类型 方法名(参数类型 参数名){ 方法体 return 返回值;}
局部变量的有效范围
可以将局部变量的有效范围称之为变量的作用域,局部变量的有效范围从该变量的声明开始到该变量结束为止。
this关键字
this关键字用于表示本类当前的对象,当前对象不是某个new出来的实体对象而是当前正在编辑的类;例如ser Name()方法代码: public void serName(String name){this.name = name;//将参数赋值予类中的成员变量}
类的构造方法
构造方法是一个与类同名的方法,对象的创建是通过构造方法来完成的。每当类实体化一个对象时,类都会调用构造方法; 定义构造方法的语法是: public Book(){构造方法体}
静态成员
静态变量与静态方法<br>static:由static关键字修饰的变量跟方法被称为静态变量和静态方法<br>静态方法与静态变量的作用是为了提供共享数据或方法,虽然比较方便,但也受修饰符约束<br>static使用的注意事项:<br>1.在静态方法中不可使用this关键字<br>2.在静态方法中不可直接调用非静态方法<br>3.局部变量不可使用static关键字声明<br>4.主方法必须使用static声明<br>5.只有内部类可以使用static关键字声明<br>
类的主方法
主方法是类的入口点,它定义了程序从何处开始,方法体体工队程序流程的控制 ;语法是: public static void main (String[] args){ 方法体 }
对象
现实世界中,随处可见的一种事物就是对象。对象是事物存在的实体,比如人,书桌,计算机,高楼大厦等
继承,多态,抽象类与接口
继承
Java语言每一个类只能继承一个父类。叫做单继承;<br>extends(继承),<br>父类的写法;<br>public class 父类类名 (){<br>}<br>子类的写法<br>public class 子类类名 extends 父类类名;<br>所有类的构造方法第一行都有一个隐藏的“super();"<br>作用是在执行该构造方法之前调用其父类构造方法;<br><br>子类重写父类的方法;<br>返回参数相同,方法名相同传入参数相同,只有方法体不同;<br><br>
多态
利用多态可以使程序具有良好的打展性,并可以对所有类对象进行通用的处理。这种将子类对象视为父类对象的做法称为“向上转型”。假如现在要编写个绘制图形的方法 drawO,如果传入正方形对象就绘制正方形,如果传入圆形对象就绘制圆形,这种场景可以使用重载来实现,定义如下:<br>public vold draw(Square s){<br>//绘制正方形的方法<br>public void draw(Circular cK<br>//绘制圆形的方法<br>
抽象类
抽象类 abstract(抽象)<br>修饰符 abstract 返回参数 方法名 (传入参数);<br> 抽象类 有抽象方法的类一定是抽象类<br>修饰符 abstract class 类名{<br>}<br>如果父类是抽象类,子类是普通类那么重写抽象方法加入方法体。
接口
接口 所有的方法都是抽象方法。<br>修饰符 interface 接口名{<br>}<br>实现 implemenls<br>java语言每个类可以实现多个接口。<br>修饰符 class 类名 implemenls 接口1 ,接口2...{<br>}<br>对象名 instanceof 接口名<br>判断对象是否属于该接口实现类。<br>
Object
所有类都可以继承Obfect类;<br>getClass方法是Object类定义的方法,它会返回对象执行的Class实例。<br>toString方法的功能是将一个对象放回为字符串类型,它会返回一个String实例。<br>
对象类型的转换
向下类型转换<br>父类转子类<br>Dog a =(Dog)new Animal();<br>强制类型转换
向上转型<br>子类对象赋值给父类对象<br>Animal a =new Dog();<br>自动类型转换
instanceof关键字
对象名 instanceof 类名 <br>判断对象是否属于该类或子类。
方法的重载
方法名相同 参数不同
final关键字
final修饰变量-----不可改变的量(常量)。<br>final修饰方法-----不能被重写。<br>final修饰的类-----不能被继承。
包和内部类
Java包类
类名冲突;Java中每个接口或类都来自不同的类包,无论是Java API中的类与接口还是自定义的类与接口,都需要隶属于某一个类包,这个类包包含了一些类和接口。
完整的类路径;一个完整的类名需要包名与类名的组合,每个类都隶属于一个类包, 只要保证同一类包中的类不同名,就可以有效地避免同名类冲突的情况。
创建包;<br>1.在src节点上右击,选择New/Package。<br>2.弹出New Java Package对话框,在name文本框中输入新建包名,然后点击Finish。
导入包
使用import关键字导入包 import关键字的语法如下: import com.mr.*;//导入com.mr包中所有的类 import com.mr.Mzth;//导入com.mr包中Math的类
使用import导入静态成员;<br>import关键字除了导入包外,还可以导入静态成员<br>使用import导入静态成员使用语法形式;import static 静态成员:
内部类
成员内部类<br>指一个类中使用内部类,可以在内部类中直接存取其所在类的私有成员变量。在成员内部类中可以 随意使用外部类的成员方法,尽管这些类成员被修饰为private;例如
public class Car {<br> private String brand;//汽车品牌<br> <br> public Car(String brand) {//汽车类的构造方法,参数为汽车品牌<br> this.brand=brand;//给汽车品牌赋值<br> }<br> class Engine{//发动机类(内部类)<br> String model;//发动机型号<br> public Engine(String model) {//发动机类的构造方法,参数为发动机型号<br> this.model=model;//给发动机型号赋值<br> }<br> public void ignite() {//(发动机)点火方法<br> System.out.println("发动机" + this.model +"点火");<br> }<br> public void start() {//启动(汽车)方法<br> System.out.println("启动" + this.brand);<br> }<br> public static void main(String[]args) {<br> Car car = new Car("大众朗行");//创建汽车类对象,并为汽车品牌赋值<br> car.start();//汽车类对象调用启动(汽车)方法<br> Car.Engine engine =car.new Engine("EA211");//创建发动机类(内部类)对象,并为发动机型号赋值<br> engine.ignite();//发动机类对象调用(发动机)点火方法<br> <br> }<br> }<br>}<br>
使用this关键字获取内部类与外部类的引用;<br>如果在外部类中定义的成员变量与内部类的成员变量名称相同,可以使用this关键字
匿名内部类;<br>匿名类是只在创建对象时才会编写类体的一种写法。匿名类的特点是“现写现用”,其语法如下:<br>new父类/父类接口(){<br>子类实现的内容
异常处理
异常概述;<br>在程序中,异常可能由程序员没有预料到的各种情况产生,也可能由超出了程序员可控范围的环境因素产生,如用户的坏数据、试图打开一一个根本不存在的文件等。在Java中,这种在程序运行时间能出现的一些错误称为异常。异常是一个在程序执行 期间发生的事件,它中断 了正在执行的程序的正<br>
抛出异常;<br>异常抛出后,如果不做任何处理,程序就会被终止。例如,将一个字符串转换为整型,可以通过Integer类的parseInt()方法来实现。但如果该字符串不是数字形式,parseInt()方法就会抛出异常, 程序将在出现异常的位置终止,不再执行下面的语句
捕捉异常;<br>Java语言的异常捕获结构由try, catch 和finally 3部分组成。其中,try 语句块存放的是可能发生异常的Java语句;catch 语句块在try语句块之后,用来激发被捕获的异常: finally 语句块是异常处理结构的最后执行部分,无论try语句块中的代码如何退出,都将执行finally 语句块。<br>
try语句; try { <br>//代码块<br>}catch(Exception1 e){ <br>//对Exception1的处理<br>}catch(Exception2 e){<br>//对Exception2的处理<br>}。。。。<br>finally{ <br>//代码块<br>}
try-catch语句块<br>知识点:JAVA的异常处理是结构化的,不会因为一个异常影响整个程序的执行<br>注意:<br>有时为 了编程简单会忽略catch语句后的代码,这样try-catch语句就成了一种摆设,一旦程序在运行过程中出现了异常,就会导致最终运行结果与期望的不一致,而错误发生的原因很难查找因此要养成良好的编程习惯,最好在catch语句块中写入处理异常的代码。<br>
finally语句块<br>完整的异常处理语句一定要包含finally语句,无论程序中有无异常发生,并且无论之前的try-catch语句块是否顺利执行完毕,都会执行finally。
Java常见的异常类
自定义异常;<br>使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户只需维示Exception类即可自定义异常类。在程序中使用自定义异常类,大体可分为以下几个步骤:<br>(1)创建自定义异常类。<br>(2)在方法中通过throw关键字抛出异常对象。<br>(3)如果在当前抛出异常的方法中处理异常,可以使用tny-catch语句块捕获并处理,否则在方注<br>
在方法中抛出异常
使用throws关键字抛出异常<br>throws关键字通常被应用在声明方法时,用来指定方法可能抛出的异常。多个异常可使用逗号隔开
使用throw关键字抛出异常<br>throw关键字通常用于方法体中,并且抛出-个异常对象。程序在执行到throw语句时立即终止,它后面的语句都不执行。
运行异常;<br>RuntimeException异常是程序运行过程中抛出的异常。Java类库的每个包中都定义了异常类,所有这些类都是Throwable类的子类。Throwable 类派生了两个子类,分别是Exception类和Error类。Eroa类及其子类用来描述Java运行系统中的内部错误以及资源耗尽的错误,这类错误比较严重。Excepio类称为非致命性类,可以通过捕捉处理使程序继续执行。Exception 类又根据错误发生的原因分为RuntimeException异常和除RuntimeException之外的异常。<br>
字符串
String类
声明字符串<br>在Java语言中,字符串必须包含在一堆双引号("")之内。<br>例如:"23.23"、"ABCDE"、"你好"<br>可以通过以下语法格式莱声明字符串变量:<br>String str;<br>String:指定该变量为字符串类型。<br>str:任意有效的标识符,表示字符串变量的名称。<br>
连接字符串
连接多个字符串;<br>使用“+”运算符可实现连接多个字符串的功能。“+”运算符可以连接多个String对象并产生一个新的String对象。
连接其他数据类型;<br>字符串也可同其他基本数据类型进行连接。如果将字符串同其他数据类型进行连接,会将其他数据类型的数据直接转换成字符串。
获取字符串信息
获取字符串长度<br> 使用String类的length()方法可获取声明的字符串对象的长度。语法如下:<br>str.length();<br>str为字符串对象<br>获取字符串长度,代码如下:<br>String str ="We are students";<br>int size = str.length();<br> 上段代码是将字符串str的长度赋值给int型变量size,此时变量size的值为15,这表示length()方法返回的字符串的长度(包括字符串中的空格)<br>
字符串查找<br>String类提供了两种查找字符串的方法,是indexOf()与lastIndexOf方法。<br>1.indexOf(String s)<br>该方法用于但会参数字符串s在指定字符串中首次出现的索引位置<br>语法:str.indexOf(substr)<br>str:任意字符串对象<br>substr: 要搜索的字符串<br>查找字符a在字符串str中的索引位置,代码如下;<br>String str ="We are students";<br>int size = str.indexOf("a") //变量size的值是3<br>2.lastIndexOf(String str)<br>该方法用于但会指定字符串最后一次出现的索引位置<br>语法:str.lastIndexOf(substr)<br> str:任意字符串对象<br>substr:要搜索的字符串<br>注意:如果lastIndexOf()方法中的参数是空字符串""(注意没有空格),则返回的结果与调用length()方法的返回结果相同。<br>
获取指定索引位置的字符;<br>使用charAt()方法可将指定索引处的字符返回。<br>语法:str.charAt(int index)<br>str:任意字符串。<br>index:整型值,用于指定要返回字符的下标
字符串操作
获取子字符串<br>通过String类的substring()方法可对字符串进行截取。substring()方法被两种不同的重载形式,来满足不同的需要。<br>1.substring(int beginlndex)<br>该方法返回的是从指定的索引位置开始截取直到该字符串结尾的子串,<br>语法:str.substring(int beginIndex)<br> 其中,beginIndex指定从某一索引处开始截取字符串<br>截取字符串,代码如下:<br>String str ="Hello World"; //定义字符串str<br>String substr = str.substring(3); //获取字符串,此时substr值为lo World<br>注意:在字符串中,空格占用一个索引位置<br>2.substring(int beginlndex,int endIndex)<br>该方法返回的是从字符串某一索引位置开始截取至某一索引位置结束的子串<br>语法:substring(int beginlndex,int endIndex)<br>beginlndex:开始截取子字符串的索引位置<br> endIndex:子字符在整个字符串中的结束位置<br>
去除空格;<br> trim()方法返回字符串的副本,忽略前导空格和尾部空格<br>语法:str.trim()<br> str为任意字符串对象
字符串替换;<br>replace()方法可实现将指定的字符或字符串替换成新的字符或字符串。<br>语法;str.replace(CharSequence target,CharSequence replacement)<br> target:要替换的字符或字符串<br>replacement:用于替换原来字符串的内容<br>replace()方法返回的结果是一个新的字符串,如果字符或字符串oldChar没有出现在该对象表达式中的字符串序列中,则将原字符串返回。<br>
判断字符串的开始与结尾<br>stsrtsWith()方法与endsWith()方法分别于判断是否以指定的内容开始或结束。这两个方法的返回值都为boolean类型。<br>1.stsrtsWith()方法<br>该方法用于判断当前字符串对象的前缀是否为参数指定的字符串<br>语法:str.stsrtsWith(String prefix) //prefix是指作为后缀的字符串<br> 2.endsWith()方法<br>该方法用于判断当前字符串是否为以给定的子字符串结束<br>语法:str.endWith(String suffix) //suffix是指作为后缀的字符串<br>
判断字符串是否相等<br>对字符串对象进行比较不能简单地使用比较运算符“==”<br>代码:<br>String tom =new String("I am a student");<br> String jerry = new String("I am a student");<br> boolean b = (tom == jerry);<br> 1.equals()方法<br>如果两个两个字符串具有相同的字符和长度,则使用equals()方法进行比较时,返回true。否则,返回false。<br>语法:str.equals(String otherstr) //其中str、otherstr是要比较的两个字符串对象<br>2.equalslgnoreCase()方法<br> 使用equals()方法对字符串进行比较时是区分大小写的,而使用equalslgnoreCase()方法是在忽略了大小写的情况下比较两个字符串是否相等,返回结果仍为boolean类型<br>语法如下:equalslgnoreCase(String otherstr) //其中str、otherstr是要比较的两个字符串对象<br>
按字典顺序比较两个字符串<br> compareToO方法为按字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode值,按字典顺序将String对象表示的字符序列与参数字符串所表示的字符序列进行比较。<br>如果按字典顺序此String对象位于参数字符串之前,则比较结果为一个负整数;如果按字典顺序此String对象位于参数字符串之后,则比较结果为一个正整数;如果这两个字符串相等,则结果为0。<br>语法如下:str.compareTo(String otherstr) //str、otherstr是要比较的两个字符串对象<br> 注意:compareTo()方法只有在equals(Object)方法返回true时才返回0<br>
字母大小写转换<br>String 类的toLowerCase()方法可将字符串中的所有大写字母改写为小写字母,而toUpperCase()方法可将字符串中的所有小写字母改写为大写字母。<br>1.toLowerCase()方法<br>该方法将字符串中的所有大写字母转换为小写<br>语法:str.toLowerCase() //str是要进行转换的字符串<br>2. toUpperCase()方法<br>该方法将字符串中所有小写字母转换为大写<br>语法:str.toUpperCase() //str是要进行转换的字符串<br>
字符串分割<br>1.split(String sign)<br>该方法可根据给定的分割符对字符串进行拆分<br>语法:str.split(String sign) //sign为分割字符串的分割符,也可以使用正则表达式<br>2.split(String sign,int limit)<br>该方法可根据给定的分割符对字符串进行拆分,并限定拆分的次数<br>语法:str.split(String sign,int limit)<br>sign:分割字符串的分割符,也可以使用正则表达式<br>limit:限制的分割次数<br>
格式字符串
String 类的静态format()方法用于创建格式化的字符串。format()方法有两种重载形式。<br>1.format(String format,Object...args)<br>该方法使用指定的格式字符和参数返回一个格式化字符串,格式化后的新字符串使用本地默认的语言环境。<br>语法:str.format(String format,Object...args)<br>format:格式化字符串<br>args:格式化字符串中由格式说明字符引用的参数<br>2.format(Local I,String format,Object...args)<br>该方法使用指定的语言环境、格式字符串和参数返回一个格式化字符串,格式化后的新字符串使用其指定语言环境。<br>语法:str.format(Local I,String format,Object...args)<br>I:格式化过程中要应用的语言环境。<br>format:格式字符串<br>args:格式字符串中由格式说明符引用的参数。可以为0<br>
日期和时间字符串格式化<br>
1.日期格式化<br>例子:<br>Date data = new Date(); //创建Date对象date<br>String s = String.formate("%te",date); //通过format()方法对date进行格式化
时间格式化如图;
格式化常见的日期时间组合;<br>格式化日期与时间组合的转换符定义了各种日期时间组合的格式,其中最常见的如下表
常规类型格式化<br>常规类型格式化可应用于任何参数类型,如下表:<br>
使用正则表达式 ;<br>正则表达式通常被用于判断语句中,用来检查某一字符串是否满足某一格式。<br>正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式<br> 注意:在正则表达式中,“.”代表任何一个字符,因此在正则表达式中如果想使用普通意义的点字符“.”,必须使用转移字符“\".<br>在正则表达式中,可以使用方括号括起若干个字符来表示一个元字符,该元字符可代表方括号中的任何一个字符。<br>
字符串生成器;<br>创建成功的字符串对象,其长度是固定的,内容不能被改变和编译。虽然使用“+”可以达到附加新字符或字符串的目的,但“+”会产生一个新的String实例,会在内存中创建新的字符串对象。如果重复地对字符串进行修改,将极大地增加系统开销。而JDK新增了可变的字符序列StringBuilder类,大大提高了频繁增加字符串的效率。<br>
常用类库
包装类
包装类及其对应的基本数据类型<br>
Integer类;<br>Integer类在对象中包装了一个基本数据类型int的值,该类的对象包含一个int类型的字段。Integer类提供了以下4个常量:<br>☑MAX VALUE:表示 int 类型可取的最大值,即³¹。<br>2³¹−1。<br>☑MIN VALUE:表示 int 类型可取的最小值,即³¹。<br>−2³¹。<br>☑ SIZE:用来以二进制补码形式表示int值的位数。<br>☑ TYPE:表示基本类型int 的Class实例<br><br>
Double类 ; Double类和Float 类是对double、float 基本类型的封装,它们都是Number 类的子类,都是对浮点数进行操作,所以常用方法基本相同。 Double 类在对象中包装一个基本类型为double 的值,每个Double类的对象都包含一个double 类型的字段。此外,该类还提供多个方法,可以将double 类型转换为String 类型,将String 类型转换为double类型,也提供了其他一些处理double类型时有用的常量和方法。Double类的常用方法如表11.3 所示。<br>
Boolean类<br> Boolean类将基本类型为boolean的值包装在一个对象中。一个Boolean 类型的对象只包含一个类型为boolean的字段。此外,此类还为boolean类型和String 类型的相互转换提供了许多方法,并提供了处理boolean 类型时非常有用的其他一些常量和方法。Boolean类的常用方法如表11.4 所示。<br>
Character类 <br>Character类在对象中包装一个基本类型为char的值,该类提供了多种方法,以确定字符的类别(小写字母、数字等),并可以很方便地将字符从大写转换成小写,反之亦然。Character 类提供了很多方法来完成对字符的操作,常用的方法如表11.5所示。
Number类<br>数值包装类的共有方法: <br>
数字处理
数字格式化<br>在Java中,没有格式化的数据遵循以下原则:<br>1.如果数据绝对值大于0.001并且小于10000000,使以常规小数形式表示。<br>2.如果数据绝对值小于0.001或者大于10000000,是用科学计数法表示。<br>DecimalFormat中的特殊字符及其所代表的含义如下:<br>
Math类 <br>Math类提供了众多数学函数方法,这些方法都被定义为static形式<br>形式调用如下:Math.数学方法<br>在Math类中,除了函数方法外还存在一些常用数学常量,如PI、E。<br>形式调用如下:<br>Math.PI<br> Math.E<br> <br>
.三角函数方法<br>Math类中包含的三角函数方法如下:<br>☑ _ public static double sin(double a);返回角的三角正弦。<br>☑ public static double cos(double a);返回角的三角余弦。<br>☑ public static double tan(double a);返回角的三角正切。<br>☑ public static double asin(double a):返回一个值的反正弦。<br>☑ public static double acos(double a):返回一个值的反余弦。<br>☑ public static double atan(double a):返回一个值的反正切。<br>☑ public static double toRadians(double angdeg):将角度转换为弧度。<br>☑ public static double toDegrees(double angrad):将弧度转换为角度。
指数函数方法<br> Math类中与指数相关的函数方法如下。<br>☑ public static double exp(double a):用于获取e的a次方,即取eᵃ。<br>☑ public static double log(double a):用于取自然对数,即取lna的值。<br>☑ public static double log10(double a);用于取底数为10的a的对数。<br>☑ public static double sqrt(double a):用于取a的平方根,其中a 的值不能为负值。<br>☑ public static double cbrt(double a):用于取a的立方根。<br>☑ public static double pow(double a, double b):用于取a的b次方。<br><br>
取整函数方法<br><br> 在具体的问题中,取整操作使用也很普遍,所以Java 在Math类中添加了数字取整方法。Math类中主要包括以下几种取整方法:<br>☑ public static double ceil(double a):返回大于等于参数的最小整数。<br>☑ public static double floor(double a):返回小于等于参数的最大整数。<br>☑ public static double rint(double a):返回与参数最接近的整数,如果存在两个同样接近的整数,则结果取偶数。<br>☑ public static int round(float a):将参数加上0.5后返回与参数最近的整数。<br>☑ public static long round(double a):将参数加上0.5 后返回与参数最近的整数,然后强制转换为长整型。<br>
取最大值、最小值、绝对值函数方法<br>在程序中最常用的方法就是取最大值、最小值、绝对值等,Math类中包括的操作方法如下:public static double max(double a,double b):取a与b之间的最大值。<br>public static int min(int a,int b):取a与b之间的最小值,参数为整型。<br>public static long min(long a,long b):取a与b之间的最小值,参数为长整型。public static float min(float a,float b):取a与b之间的最小值,参数为单精度浮点型。public static double min(double a,double b):取a与b之间的最小值,参数为双精度浮点型。public static int abs(int a):返回整型参数的绝对值。<br>public static long abs(long a):返回长整型参数的绝对值。<br>public static float abs(float a):返回单精度浮点型参数的绝对值。<br>public static double abs(double a):返回双精度浮点型参数的绝对值。<br>
Random类<br>Random对象创建一个随机数生成器语法如下:<br>Random r = new Random;<br>设置随机数生成器的种子 语法如下:<br>Random r = new Random(seedValue); <br>r: Random类对象。<br>seedValue:随机数生成器的种子。<br>在Random类中,提供了获取各种数据类型随机数的方法,下国之伙2今孙田计前<br>public int nextInt):返回一个随机整数。<br>public int nextInt(int n):返回大于等于0且小于n的随机<br>public long nextLong():返回一个随机长整型值。<br>public boolean nextBoolean):返回一个随机布尔型值。<br>public float nextFloat():返回一个随机单精度浮点型值。<br>public double nextDouble():返回一个随机双精度浮点型应 <br>public double nextGaussian):返回一个概率密度为高斯少士8台晰明向叶进研<br>
BigInteger类<br>在Biglnteger类中封装了多种操作,除了基本的加、减、乘、除操作,还提供了绝对值、相反数、最大公约数以及判断是否为质数等操作。<br>使用BigInteger类,可以实例化一个BigInteger对象,并自动调用相应的构造函数。BigInteger类具有很多构造函数,但最直接的一种方式是参数以字符串形式代表要处理的数字。<br>例如,将2转换为BigInteger类型,可以使用以下语句进行初始化操作:<br>Biglnteger twolnstance =new Biglnteger("2");<br><br>注意:参数2的双引号不能省略,因为参数是以字符串的形式存在的。<br> 一旦创建了对象实例,就可以调用Biglnteger 类中的一些方法进行运算操作,包括基本的数学。算和位运算以及一些取相反数、取绝对值等操作。下面列举了Biglnteger类中常用的几种运算方法:public BigInteger add(BigInteger val):做加法运算。<br>public BigInteger subtract(BigInteger val):做减法运算。<br>public BigInteger multiply(BigInteger val):做乘法运算。<br>public BigInteger divide(BigInteger val):做除法运算。<br>public BigInteger remainder(BigInteger val):做取余操作。<br>public BigIntegerl] divideAndRemainder(BigInteger val):用数组返回余数和商,结果数组中第一个值为商,第二个值为余数。<br>public BigInteger pow(int exponent):进行取参数的exponent次方操作。<br>public BigInteger negate():取相反数。<br>public Biglnteger shiftLeft(int n):将数字左移n位,如果n为负数,做右移操作。public BigInteger shiftRight(int n):将数字右移n位,如果n为负数,做左移操作。public BigInteger and(BigInteger val):做与操作。<br>public BigInteger or(BigInteger val):做或操作。<br>public int compareTo(BigInteger val):做数字比较操作。<br>public boolean equals(Object x):当参数x是BigInteger类型的数字并且数值与对象实例的数值相等时,返回true。public BigInteger min(BigInteger val):返回较小的数值。<br>public BigInteger max(Biglnteger val):返回较大的数值。<br>
BigDecimal类<br>相比于BigInteger类,BigDecimal类加入了小数的概念。BigDecimal类支持任何精度的定点数。 可以看做是float与double类型的超强进化版。
常用构造方法
常用计算方法; add(BigDecimal augend) :加法<br>subtract(BigDecimal augend) :减法<br>multiply(BigDecimal augend) :乘法<br>divide(BigDecimal divisor,int,scale,RoundingModeroundingMode):除法,方法中3 个参数分别代表除数、商的小数点后的位数、近似处理模式<br>
divide()方法的多种处理模式
时间日期处理
Date类<br>例如,使用Date类的第2种构造方法创建一个Date类的对象,代码如下:<br>long timeMillis = System.currentTimeMillis(); //当前系统时间所经历的毫秒数<br>Date date =new Date(timeMillis); <br>Date类的常用方法及其说明如下:<br>
日期时间格式化<br> DateFormat 类是日期时间格式化子类的抽象类,可以按照指定的格式对日期或时间进行格式化。DateFormat类提供了很多类方法,以获得基于默认或给定语言环境和多种格式化风格的默认日期时间Formatter,格式化风格主要包括SHORT、MEDIUM、LONG和FULL4种:<br>SHORT:完全为数字,如12.13.52或3:30pm。<br>MEDIUM:较长,如Jan 12,1952。<br>LONG:更长,如January 12,1952或3:30:32pm。<br>FULL:完全指定,如Tuesday、April 12、1952AD或3:30:42pm PST。<br> 另外,使用DateFormat类还可以自定义日期时间的格式。要格式化一个当前语言环境下的日期,首先需要创建DateFormat类的一个对象,由于它是抽象类,因此可以使用其静态方法 getDateInstance()进行创建,语法如下:DateFormat df =DateFormat.getDatelnstance();<br> DateFormat 类的常用方法及其说明如下:<br> 例如,将当前日期按照DateFormat类默认格式输出:<br>DateFormat df = DateFormat. getinstance();<br>system.out.printin(df.format(new Date());<br>结果如下:<br>2021/2/19上午9:59<br>输出长类型格式的当前时间:<br>DateFormat df =DateFormat.getTimelnstance(DateFormat.LONG);<br>System.out.printn(df.format(new Date());<br>结果如下:<br>CST 上午10:00:33<br>输出长类型格式的当前日期:<br>DateFormat df=DateFormat.getDate/nstance(DateFormat.LONG);<br>System.out.printin(df.format(new Date());<br>结果如下:<br>2021年2月19日<br>输出长类型格式的当前日期和时间:<br>DateFormat df = DateFormat.getDate Timelnstance(DateFormat.LONG, DateFormat.LONG);System,out.println(df.format(new Date()));<br>结果如下:<br>2021年2月19日CST上午10:01:12<br>
SimpleDateFormat类提供了19个格式化字符,如下:
Calendar类<br>Calendar 提供了一个类方法 getnstance(),以获得此类型的一个通用的对象。Calendar类的grtnstance()方法返回一个Calendar对象,其日历字段已由当前日期和时间初始化,其使用方法如下:Calendar rightNow =Calendar.getlnstance(); 说明:由于Calendar类是一个抽象类,不能用new创建实例对象,因此除了使用getInstance0方法创建其对象,如果需要创建其对象,必须使用其子类,如GregorianCalendar类。最后对Calendar类的使用做出几点总结:<br> c.set(Calendar.DAY_OF_MONTH,0)获取的是上个月的最后一天,所以调用前需要将月份往后<br>加一个月。<br>Calendar.MONTH的第一个月是使用()记录的,所以在获得月份数字后要加1。年和日是从<br>开始记录的,不需要加1。<br>Calendar.DAY OF_WEEK的第一天是周日,周一是第二天,周六是最后一天。<br>
Scanner类
Scanner类首先要引入该类,语法如下:<br>import java.util.Scanner; //引入Scanner类<br>下表所示的常用的方法,通过这些方法可以获取控制台中输入的不同类型的值
Runtime类<br>
Runtime类的常用方法如下:
执行本地命令;<br>本地命令指的是操作系统的命令。例如,在Linux系统下就表示shell命令,在Windows系统下就表示cmd命令。<br>Rutime类提供exec()方法让Java代码可以执行系统的命令,exec)方法有很多重载的形式,例如:<br>Process exec(String command)<br>Process exec(String, cmdarray)<br>command:要执行的系统命令,字符串类型。<br>cmdarray:要执行的命令和相应的命令参数,字符串数组类型。<br>其实这两个重载方式很类似,如执行“javac hellojava”这行命令,使用第一种重载方式的代码如下:<br>Runtime.getRuntime().exec("javac hello.java");<br>使用第二种重载方式的代码如下:<br>String command,=("javac","hello.java"];<br>Runtime.getRuntime().exec(command);<br>exec)方法会返回一个 Process对象。Process类是Java中进程类,该类是抽象类,不能使用new关键字创建实例。Process类的常用方法如表11.22所示,开发可以使用getlnputStream)方法获取进程返回的信息。<br>
查看内存
Runtime类可以通过freMemory0方法查看当前<br>Java虚拟机可用内存的剩余量。如果程序能够实时监<br>控内存剩余量,就可以尽量控制程序对内存的占用,<br>从而避免出现“内存溢出”的情况。同样,也可以用<br>来对测试程序性能,检验程序算法是否导致内存紧张。<br>
收藏
0 条评论
下一页