java从入门到精通
2023-06-10 15:23:15 8 举报
AI智能生成
java
作者其他创作
大纲/内容
1.初识java
java简介
Java是一门高级的面向对象的程序设计语言,也是一种跨平台的程序设计语言
java语言编写的程序既是编译型又是解释型的
程序代码经过编译之后转换成一种叫java字节码的中间语言,编译只进行一次
java语言的特性
面向对象是java语言基础,也是它的重要特性
java语言最外部的数据类型是对象,所有元素都要通过类和对象来访问
java的分布性包括操作分布和数据发布
Java具有与体系结构无关的特性
运行java需要解释器
java语言取消了类c语言中的指针和内存释放等语法,使用java可以编写出防病毒和防修改的系统
java会检查程序在编译和运行时的错误并消除错误
支持多线程机制
编译后的字节码是在解释器中运行的
java可以动态调整库中方法和增加变量
2.熟悉Eclipse开发工具
熟悉Eclipse
它的平台体系结构是在插件概念的基础上构建的
透视图是Eclispe工作台提供的附加组织层,可实现多个视图的布局和可用操作的集合,不同的透视图可切换,同一时刻只能用一个透视图
视图有自己独立的菜单和工具栏,多用于浏览信息的层次结构和显示活动编辑器的属性
使用Eclipse
创建java程序,进行程序调试
设置断点是程序调试不可少的手段
3.java语言基础
主类结构
一个Java应用程序是由若干个类组成的
类的属性称为类的全局变量(成员变量),将方法中的属性称为局部变量
main()方法是程序开始执行的位置
API文档是程序开发人员不可或缺的工具
基本数据类型
整数类型用于存储整数数值
int型
byte型
short型
long型
属于高精度数据类型
浮点类型用于存储含有小数部分的数值
单精度浮点类型和双精度浮点类型具有不同的取值范围
字符类型用于存储单个字符
char型
在定义字符型变量时用单引号表示,虽然只是一个字符,因为使用单引号,所以表示的是字符串不是字符
转义字符
转义字符具有特定的含义,不同于字符原有的意义,所以称转义
布尔类型(逻辑类型)
布尔值不能与整数类型进行切换
变量与常量
标识符与关键字
标识符
标识符由任意顺序的字母,下划线(-),美元符号($)和数字组成,第一个字符不能是数字
标识符不能是Java中的关键字(保留字)
关键字(保留字)
不能把这些单词作为标识符使用
声明变量
变量的命名必须是合法的标识符
内存空间内的值就是变量值
声明常量
在程序运行过程中一直不会改变的量称为常量
当变量被final关键字修饰时,该变量就变成了常量,必须在定义时就设定它的初值
运算符
赋值运算符
可将右边操作数所含的值赋给左方的操作数
比较运算符
用于程序中的变量之间,变量与自变量之间以及其他类型之间的比较
运算符优先级
增量与减量运算
算术运算
比较运算
逻辑运算
赋值运算
数据类型转换
隐式类型转换
从低级类型向高级类型转换,系统自动执行
这些类型由精度从低到高顺序:byte<short<int<long<float<double
不包括逻辑类型和字符类型
显式类型转换
把高密度的变量的值赋给低精度的变量时,必须使用显式类型转换运算
4.流程控制
复合语句
每个语句都是从上到下被执行
条件语句
if条件语句
告诉程序在某个条件成立的情况下执行某个语句,在另一种情况下执行另外的语句
循环语句
while循环语句
利用一个条件来控制是否要继续反复执行这个语句
foreach语句
不能完全取代for语句,但可以改写为for语句
循环控制
break语句
跳出当前循环
continue语句
不是立即跳出循环,而是跳过本次循环,回到循环的条件测试部分,重新开始执行循环
5.数组
一维数组
使用数组前必须首先定义数组变量所属的类型,可以跟基本数据类型一样进行初始化操作,可分别初始化数组中的每个元素
数组作为对象允许使用new关键字进行内存分配。
二维数组
一维数组的每个元素都是数组,那他就是二维数组
数组的基本操作
遍历数组
获取数组中的每个元素
通常使用for循环来实现
数组排序算法
冒泡排序
直接选择排序
将最大的数放到最后,固定不动,第二次再将最大的数放到最后,固定不动,直到全部待排序的数据元素排完
反转排序
就是第一个数和最后一个数交换,第二个数和倒数第二个数交换,第三个数和倒数第三个数交换,以此类推。就像一面镜子,如果是单数中间那个不会交换。
直到把所有的数组元素反转替换
直到把所有的数组元素反转替换
6.类和对象
面向对象概述
对象
对象是事物存在的实体
类
同一类事物的统称,以方法的形式定义,是封装对象的属性和行为的载体
封装
是面向对象编程的核心思想,简单点说就是,我把某些东西封装起来,这些关键的核心的东西不能给你看,但是我可以提供给你一些简单使用的方法。封装其实是对外隐藏复杂细节,提供简单易用的接口,便于外界调用,从而提高系统的可扩展性、可维护性。在Java中这种隐藏或公开是通过权限修饰符来实现的。采用封装保证内部结构完整性,提高了程序的可维护性
继承
类与类之间同样具有关系,称为关联。继承就是关联的一种
多态
类
成员变量
可以是任意类型,对象的属性也称为成员变量,直接写在类里的叫成员变量
成员方法
一个成员方法可以有参数
成员方法有返回值和不返回任何值的选择
权限修饰符
控制着对类和类的成员变量以及成员方法的访问
局部变量
在方法被执行时创建,在方法执行结束时销毁,局部变量在使用时必须进行赋值操作或被初始化
类的构造方法
在构造方法中可以给成员变量赋值,构造方法没有返回值
静态变量和静态方法
通常为了提供共享数据或方法
类的主方法
它定义了程序从何处开始,主方法是静态的,没有返回值,主方法的形参为数组
对象
每个对象都是相互独立的,都具有生命周期
7.继承.多态.抽象类与接口
类的继承
Java的每个子类都只能继承一个父类,简称单继承,可提高软件的可维护性和·可扩展性,可以减少软件开发周期
子类继承父类后,调用后同时会进行子类和父类打印
Object类
所有的类的父类,是java类层中的最高层类
对象类型的转换
向上转型
将子类对象(等号右边)向父类引用(等号左边)
在运用向上转型过程中,父类的对象无法调用子类独有的属性或者方法
向下转型
将父类对象向子类引用,
需要进行强制类型转换
需要进行强制类型转换
两个没有继承关系的对象不可以进行向上转型或者向下转型
父类对象可以强制转换为子类对象,但是必须让父类对象先引用这个子类对象
方法的重载
就是在同一个类中允许存在一个或一个人以上的同名方法,只要这些方法的参数个数或类型不同即可
final关键字
final关键字——不可被修改(常量)
final修饰方法——不可以被重写
final修饰方法——不可以被继承
final修饰方法——不可以被重写
final修饰方法——不可以被继承
多态
同一方法或同一个地方出现不同的形态就叫多态,利用多态可以使程序具有良好的扩展性
抽象类与接口
抽象类
有抽象方法的类一定是抽象类,一般将父类定义为抽象类
接口
是抽象类的延伸,接口所有方法都是抽象方法,可以被权限修饰符修饰
8.包和内部类
java类包
类名冲突
有包的存在就有类名存在,类名定义多种,但功能不同
完整的类路径
一个完整的类名需要包名与类名的组合,每个类都属于一个类包,只要保证同一类包的类不同名,就可以有效地避免同名类冲突的情况
创建包
导入包
import关键字除了可以导入包外,还可以导入静态成员,
当使用import指定了一个包的所有类时,并不会指定这个包的子包中的类,如果要用到这个包的子包中的类,需要再次对子包进行单独引用
内部类
成员内部类
成员内部类不止可以 在外部类使用,在其他类中也可以使用。在其他类中创建内部类的对象语法特殊,在一个类中使用内部类,可以在内部类中直接获取其所在类的私有成员变量
如果在外部类中定义的成员变量与内部类的成员变量名称相同,可以使用this关键字
匿名内部类
匿名类是只在创建对象时才会编写类体的一种写法,匿名类特点:现用现写
9.异常处理
异常概述
在程序运行时可能出现的一些错误称为异常,它是一个在程序执行期间发生的事件,它中断了正在执行的程序的正常指令流
异常的抛出与捕捉
java的异常处理是结构化的,不会因为一个异常影响整个程序的执行
java常见的异常类
自定义异常
定义1个exception类继承,这就是自定义异常
括号里是传入参数,super是隐藏方法,作用是调用父类的构造方法打印出错误信息
在方法中抛出异常
使用shrows关键字将异常抛给上一级后,如果不想处理该异常,可以继续向上抛出,但最终要有能处理该异常的代码
运行时异常
10.字符串
String类
声明字符串
字符串必须包含在一对双引号(" ")之内
字符串常量可以是系统能够显示的任何文字信息,甚至可以是单个字符
创建字符串
在Java语言中,将字符串作为对象来处理,因此可以像创建其他类对象一样来创建字符串对象。创建对象要使用类的构造方法
字符串常量的引用赋值来创建字符串
除了以上几种使用String类的构造方法来创建字符串变量外,还可以通过将字符串常量的引用赋值给一个字符串来创建字符串。代码如下:
String str,str2;
str="we are str";
str2="we are str2";
除了以上几种使用String类的构造方法来创建字符串变量外,还可以通过将字符串常量的引用赋值给一个字符串来创建字符串。代码如下:
String str,str2;
str="we are str";
str2="we are str2";
连接字符串
连接多个字符串
使用“+”运算符可实现连续多个字符串的功能。“+”运算符可以连接多个string对象并产生一个新的对象string对象
连接其他数据类型
字符串也可同其他基本数据类型进行连接,如果将字符串同其他数据类型进行连接,会将其他数据类型的数据直接转换成字符串。
获取字符串信息
获取字符串长度
使用string类的length()方法可获取声明的字符串对象的长度
语法:
str.length();
str.length();
字符串查找
indexOf(string s)
该方法用于返回参数字符串S在指定字符串中首次出现的索引位置,当调用string类的indexOf()方法时,会从当前字符串的开始位置搜索S的位置,如果没有检索到字符串S该方法的返回值是-1
该方法用于返回参数字符串S在指定字符串中首次出现的索引位置,当调用string类的indexOf()方法时,会从当前字符串的开始位置搜索S的位置,如果没有检索到字符串S该方法的返回值是-1
语法:
str.indexOf(substr)
str:任意字符串对象
substr:要搜索的字符串
str.indexOf(substr)
str:任意字符串对象
substr:要搜索的字符串
lastindexOf(string str)
该方法用于返回指定字符串最后一次出现的索引位置。当调用string类的lastIndexOf()方法时,会从当前字符串的开始位置检索数字字符串str,并将最后一次出现在str的索引位置返回,如果没有检索到字符串str该方法返回-1
该方法用于返回指定字符串最后一次出现的索引位置。当调用string类的lastIndexOf()方法时,会从当前字符串的开始位置检索数字字符串str,并将最后一次出现在str的索引位置返回,如果没有检索到字符串str该方法返回-1
语法:
str.lastindexOf(substr)
str:任意字符串对象
substr:要搜索的字符串
str.lastindexOf(substr)
str:任意字符串对象
substr:要搜索的字符串
字符串操作
获取子字符串
通过string类的sudstring()方法可对字符串进行截取
substring(int beginlndex)
substring(int beginlndex)
去除空格
rim()方法返回字符串的副本,忽略前导空格和尾部空格
语法:str.trim
str:为任意字符串对象
str:为任意字符串对象
字符串替换
replace()方法可实现将指定的字符或字符串替换成新的字串或字符串,replace()方法返回的结果是一个新的字符串。如果字符或字符串oldChar没有出现在该对象表达式中的字符串序列中,则将原字符串返回
语法:str. replace(CharSequence target,CharSequence,replacement)
target:要替换的字符或字符串
replacement:用于替换原来字符串的内容
target:要替换的字符或字符串
replacement:用于替换原来字符串的内容
判断字符串的开始与结尾
startsWith()方法与endsWith()方法分别用于分别于判断字符串是否指定的内容开始或结束。这两个方法的返回值都为boolean类型
判断字符串是否相等
对字符串对象进行比较不能简单地使用比较运算符“==”,因为比较运算符比较的是两个字符串的地址是否相同。即使两个字符串的内容相同,两个对象的内存地址也是不同的,使用比较运算符仍然会返回 false。
按字典顺序比较两个字符串
compareTo0方法为按字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode 值,按字典顺序将 String对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数;如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数;如果这两个字符串相等,则结果为 0。
字母大小写转换
String 类的 toLowerCase0方法可将字符串中的所有大写字母改写为小写字母,而 toUpperCase0方法可将字符串中的所有小写字母改写为大写字母。
toLowerCase()方法
该方法将字符串中的所有大写字母转换为小写。如果字符串中没有应该被转换的字符,则将原符串返回:否则将返回一个新的字符串,将原字符串中每个大写字母都转换成小写,字符串长度不变
该方法将字符串中的所有大写字母转换为小写。如果字符串中没有应该被转换的字符,则将原符串返回:否则将返回一个新的字符串,将原字符串中每个大写字母都转换成小写,字符串长度不变
语法:
str.toLowerCase()
str 是要进行转换的字符串
str.toLowerCase()
str 是要进行转换的字符串
toUpperCase()方法
该方法将字符串中所有的小写字母转换为大写。如果字符串中没有应该被转换的字符,则将原符串返回;否则返回一个新字符串,将原字符串中每个小写字母都转换成大写,字符串长度不变。
该方法将字符串中所有的小写字母转换为大写。如果字符串中没有应该被转换的字符,则将原符串返回;否则返回一个新字符串,将原字符串中每个小写字母都转换成大写,字符串长度不变。
语法:
str.toUpperCase()
str 是要进行转换的字符串
str.toUpperCase()
str 是要进行转换的字符串
字符串分割
使用split0方法可以使字符串按指定的分割字符或字符串进行分割,并将分割后的结果存放在字符串数组中。
split(String sign)
该方法可根据给定的分割符对字符串进行拆分。
该方法可根据给定的分割符对字符串进行拆分。
语法:
str.split(String sign)
sign 为分割字符串的分割符,也可以使用正则表达式
str.split(String sign)
sign 为分割字符串的分割符,也可以使用正则表达式
split(String sign,int limit)
该方法可根据给定的分割符对字符串进行拆分,并限定拆分的次数
该方法可根据给定的分割符对字符串进行拆分,并限定拆分的次数
语法:
str.split(String sign,int limit)
sign:分割字符串的分割符,也可以使用正则表达式口
limit:限制的分割次数
str.split(String sign,int limit)
sign:分割字符串的分割符,也可以使用正则表达式口
limit:限制的分割次数
格式化字符串
日期和时间字符串格式化
在应用程序设计中,经常需要显示日期和时间。如果想输出满意的日期和时间格式,一般需要写大量的代码、经过各种算法才能实现。frmat方法通过给定的特殊转换符作为参数来实现对日期时间的格式化。格式化日期与时间组合的转换符定义了各种日期时间组合的格式
常规类型格式化
常规类型格式化可应用于任何参数类型
使用正则表达式
正则表达式通常被用于判断语句中,用来检查某一字符串是否满足某一个格式。正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的云字符。
字符串生成器
创建成功的字符串对象,其长度是固定的,内容不能被改变和编译。虽然使用“+”可以达到附新字符或字符串的目的,但“+”会产生一个新的 String 实例,会在内存中创建新的字符串对象。利用StringBuilder类中的方法可动态地执行添加,删除和插入等字符串的编辑操作
11.常用类库
包装类
将基本数据类型封装在包装类中,可以把这些基本数据类型转换为对象进行处理
Integer类
能在 int 类型和 String 类型之间互相转换,同时还提供了其他一些处理 int 类时非常有用的常量和方法
Double类
可以将 double 类型转换为 String 类型,将 String 类型转换为do类型,也提供了其他一些处理 double 类型时有用的常量和方法。
Boolean类
Boolean 类将基本类型为 boolean 的值包装在一个对象中。一个 Boolean 类型的对象只包含一个类型为 boolean 的字段
Character类
Character 类在对象中包装一个基本类型为char 的值,该类提供了多种方法,以确定字符的类别(写字母、数字等),并可以很方便地将字符从大写转换成小写,反之亦然。
Number类
对于数值型的包装类,它们有一个共同的父类——Number类,该类是一个抽象类
数字处理
数字格式化
数字格式化主要针对的是浮点型数据
没有格式化的数据遵循以下原则:
如果数据绝对值大于 0.001 并且小于 10000000,使以常规小数形式表示。
如果数据绝对值小于 0.001 或者大于 10000000,使用科学记数法表示。
如果数据绝对值大于 0.001 并且小于 10000000,使以常规小数形式表示。
如果数据绝对值小于 0.001 或者大于 10000000,使用科学记数法表示。
当格式化数字时,可在 DecimalFormat 类中使用一些特殊字符构成一个格式化模板,使数字按照-定的特殊字符规则进行匹配
Math类
Math 类中包含的三角函数方法如下:
public static double sin(double a): 返回角的三角正弦。
public static double cos(double a): 返回角的三角余弦。
public static double tan(double a): 返回角的三角正切。
public static double asin(double a):返回一个值的反正弦。
public static double acos(double a):返回一个值的反余弦。
public static double atan(double a): 返回一个值的反正切。
public static double toRadians(double angdeg): 将角度转换为弧度。
public static double toDegrees(double angrad): 将弧度转换为角度。
public static double sin(double a): 返回角的三角正弦。
public static double cos(double a): 返回角的三角余弦。
public static double tan(double a): 返回角的三角正切。
public static double asin(double a):返回一个值的反正弦。
public static double acos(double a):返回一个值的反余弦。
public static double atan(double a): 返回一个值的反正切。
public static double toRadians(double angdeg): 将角度转换为弧度。
public static double toDegrees(double angrad): 将弧度转换为角度。
Math 类中与指数相关的函数方法如下。
public static double exp(double a): 用于获取e的a次方,即取
public static double log(double a):用于取自然对数,即取 Ima的值
public static double log10(double a): 用于取底数为 10的a的对数
public static double sqrt(double a): 用于取a的平方根,其中a 的值不能为负值
public static double cbrt(double a):用于取a的立方根
public static double pow(double a,double b): 用于取a的b次方
public static double exp(double a): 用于获取e的a次方,即取
public static double log(double a):用于取自然对数,即取 Ima的值
public static double log10(double a): 用于取底数为 10的a的对数
public static double sqrt(double a): 用于取a的平方根,其中a 的值不能为负值
public static double cbrt(double a):用于取a的立方根
public static double pow(double a,double b): 用于取a的b次方
Math类中主要包括以下几种取整方法:
public static double ceil(double a): 返回大于等于参数的最小整数。
public static double floor(double a): 返回小于等于参数的最大整数。
public static double rint(double a): 返回与参数最接近的整数,如果存在两个同样接近的整数,区则结果取偶数。
public static intround(float a): 将参数加上0.5 后返回与参数最近的整数。
public static long round(double a): 将参数加上0.5 后返回与参数最近的整数,然后强制转换为K长整型
public static double ceil(double a): 返回大于等于参数的最小整数。
public static double floor(double a): 返回小于等于参数的最大整数。
public static double rint(double a): 返回与参数最接近的整数,如果存在两个同样接近的整数,区则结果取偶数。
public static intround(float a): 将参数加上0.5 后返回与参数最近的整数。
public static long round(double a): 将参数加上0.5 后返回与参数最近的整数,然后强制转换为K长整型
Math 类中包括的操作方法如下:
public static double max(double a,double b): 取a与b之间的最大值。
public static intmin(int a,int b):取a与b之间的最小值,参数为整型。
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): 返回整型参数的绝对值
public static long abs(long a): 返回长整型参数的绝对值
public static float abs(float a): 返回单精度浮点型参数的绝对值口
public static double abs(double a): 返回双精度点型参数的绝对值
public static double max(double a,double b): 取a与b之间的最大值。
public static intmin(int a,int b):取a与b之间的最小值,参数为整型。
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): 返回整型参数的绝对值
public static long abs(long a): 返回长整型参数的绝对值
public static float abs(float a): 返回单精度浮点型参数的绝对值口
public static double abs(double a): 返回双精度点型参数的绝对值
Random类
Random 类是 JDK 中的随机数生成器类,可以通过实例化一个 Random 对象创建一个随机数生器
在 Random 类中,提供了获取各种数据类型随机数的方法,下面列举几个常用的方法:
public int nextInt0:返回一个随机整数。
publicintnextImt(int n):返回大于等于0且小于n的随机整数
public long nextLong0:返回一个随机长整型值。
public boolean nextBoolean0: 返回一个随机布尔型值
public float nextFloat0: 返回一个随机单精度浮点型值。
public double nextDouble0: 返回一个随机双精度浮点型值。
public double nextGaussian0: 返回一个概率密度为高斯分布的双精度浮点型值。
public int nextInt0:返回一个随机整数。
publicintnextImt(int n):返回大于等于0且小于n的随机整数
public long nextLong0:返回一个随机长整型值。
public boolean nextBoolean0: 返回一个随机布尔型值
public float nextFloat0: 返回一个随机单精度浮点型值。
public double nextDouble0: 返回一个随机双精度浮点型值。
public double nextGaussian0: 返回一个概率密度为高斯分布的双精度浮点型值。
BigInteger类
在运算中 BigInteg类可以准确地表示任何大小的整数值而不会丢失信息。
BigDecimal类
支持任何精度的定点数,可以用它来精确计算货币值。
System类
System类是JDK 中提供的系统类,该类是用fial 修饰的,所以不允许被继承。System 类提供了很多系统层面的操作方法,并且这些方法全部都是静态的。
Scanner类
可以把数字化信息流转为人类可识别的文字,让 Scanner 扫描Systemin 就可以获取用户输入的值了
日期时间类
Date类
用于表示日期时间,使用该类表示时间需要使用其构造方法创建对象
日期时间格式化
使用 DateFormat类还可以自定义日期时间的格式,格式化一个当前语言环境下的日期,首先需要创建 DateFormat类的一个对象,由于它是抽象类,因此可以使用其静态方法 getDateImstance0进行创建,DateFormat 类是日期时间格式化子类的抽象类
Calendar类
是一个抽象类,该类还为实现包范围外的具体日历系统提供了其他字段和方法,这些字段和方法被定义为 protected,Calendar 类的getInstance0方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化
Runtime类
Runtime 类不能使用 new 关键字创实例,只能通过RuntimegetRuntime0方法获取实例。
执行本地命令
Runtime 类提供exec0方法让 Java代码可以执行系统的命令,exec0方法有很多重载的形式,exec0方法会返回一个 Process 对象。Process 类是 Java 中进程类,该类是抽象类,不能使用new关键字创建实例
查看内存
Runtime 类可以通过 freeMemory0方法查看当前Java 虚拟机可用内存的剩余量。如果程序能够实时监控内存剩余量,就可以尽量控制程序对内存的占用,从而避免出现“内存溢出”的情况。同样,也可以用来对测试程序性能,检验程序算法是否导致内存紧张

收藏
0 条评论
下一页