java
2018-10-11 12:35:09 1 举报
AI智能生成
123
作者其他创作
大纲/内容
初识java
安装
设置环境
我的电脑属性,高级系统设置,环境变量,找到path,在后添加bin文件的路径
Hello World
保存为java后缀的文件
javac 文件名 .java 出现新文件(class文件)
运行 java 文件名
分支主题
JDK 包含GRE GRE里有JVM
JDK全程,,Java Development Kit
注释
单行注释://
多行注释:/**/
文档注释/***/
java变量
public static ovid main (String [] args){ } 1,这是一个方法
2,javase的入口
带圆括号的都是方法
2,javase的入口
带圆括号的都是方法
变量类型+变量名(自己起的)
变量必须声明,,且初始化之后才能使用
命名规则,字母加下划线加$符号,,,数字不可作为名字但可以作为内容
驼峰命名法,,首单词的首字母小写,之后每一个单词首字母大写
数据类型
基本数据类型
整形
默认的字面量是int
默认的字面量是int
byte 字节
1byte=8bit
1byte=8bit
最大值 2的7次方减1,,,最小值为负的2的7次方
子主题
short,,,,16bit
2的15次方减一,,,负的2的15次方
int,,,32bit
2的31次方
long,,64bit
2的63次方
默认值都是0
浮点数类型
用于表示小数的数据类型
浮点数的默认字面量是double
后缀d是double,,f是float
用于表示小数的数据类型
浮点数的默认字面量是double
后缀d是double,,f是float
float ,,32位
默认值:0.0f
double,,64位
表述范围: 1.7*10的3.8次方
默认值0.0
int比float精确度高,但是数字域小
double精确度大于int,但是不如long
double精确度大于int,但是不如long
字符类型,,char
占两个字节
汉字一个占两个字节,。
所以一个chat只能存放一个汉字
占两个字节
汉字一个占两个字节,。
所以一个chat只能存放一个汉字
放字符的时候,用单引号,,也可以用数字表示英文用ASCII
ascii码,,在chat类型中数字不一定代表数字,用数字代替字符
例,65代表大写A,,,97代表小写a
例,65代表大写A,,,97代表小写a
表述范围是0—65535
默认值是 \u0000 空字符
布尔类型:boolean
true(真)
false(假)
默认值为false
引用数据类型
默认值是 null 空
默认值是 null 空
class
interface 接口
数组(Array)
计算机中最小的组成单位:bit(位)
KB,MB,GB,TB等。
1KB=1024byte
1KB=1024byte
数据类型转换
自动类型转换
强制类型转换
加括号在里面写上需要转换的类型,
小转大不用
小转大不用
控制台输入
(emmmm)
(emmmm)
类名首字母大写
String str = scanner.next( ); 接收某个值
eclipse,,,
包的命名规则,所有都要小写
main主函数的快捷键
main,,alt+/
输出语句的快捷键
syso,,,alt+/
main,,alt+/
输出语句的快捷键
syso,,,alt+/
Method(方法)
1,方法的声明,,declare
权限修饰符+返回值类型+方法名+() {}
声明规范
1,要有权限修饰符
public (公开的)
public 返回值类型 名字(){
返回值
}
返回值
}
返回值为,调用这个方法后,传回去的值,是个具体的值
protected (受到保护的)
protected void 名字(){ }
void(default,默认的,不用写,虚拟机规范)
void 名字(){ }
private (私有的)
private void 名字(){ }
2,要有返回值类型
基本数据类型和引用类型
特殊的:void
返回值:当调用一个方法后所产生的结果,称为方法的返回值
Scanner sc = new Scanner(System.in);从控制台输入
int a = sc.nextInt,,,把接收的值,赋值给a ,此时的a是int类型,
如果是别的类型,,,nextint需要变化
int a = sc.nextInt,,,把接收的值,赋值给a ,此时的a是int类型,
如果是别的类型,,,nextint需要变化
3,要有方法名
要符合java的命名规范
4,要有参数列表
方法名后的括号里的
1,可有,任意任何类型的参数
2,可无:void,表示调用一个方法后无返回值返回
调用一个无返回值的方法,不能通过输出语句输出
子主题
5,return
表示执行完一个方法的标记
子主题
java运算符
1,算数运算符:+ - * /
模运算符:% 取余
例:10%3=1
然后:10%3=1
10%-3=1
-10%3=-1
-10%-3=-1
前面的如果为负数,摸值为负
10%-3=1
-10%3=-1
-10%-3=-1
前面的如果为负数,摸值为负
2,位运算符
数值
数值
& 与
如果是数值,将数值转换为二进制,然后求与运算
两个都死1 , 结果为1
两个都死1 , 结果为1
例:5&2
5-->0101
2-->0010
&
0000
5-->0101
2-->0010
&
0000
| 或
如果是数值,转成二进制
只要有一个为1 , 结果就为1
只要有一个为1 , 结果就为1
! 非
如果是数值,
不能用!,要用~
转成二进制,0变1,,11变0,,取反
正数,变成负数
负数的话要找负数的二进制表,然后取反
不能用!,要用~
转成二进制,0变1,,11变0,,取反
正数,变成负数
负数的话要找负数的二进制表,然后取反
特殊的算数运算
分母不能为零
浮点数,,分母可以为零
使用以下方法可输出
double a = 10
double b = 0
System.out.println(a/b )
得到 Infinity,,正无穷
double a = 10
double b = 0
System.out.println(a/b )
得到 Infinity,,正无穷
3,逻辑运算符
左右两边只能是boolean(布尔类型)
不能是数值
左右两边只能是boolean(布尔类型)
不能是数值
&& 与
一假皆假
| | 或
一真皆真
! 非
非,不是两边都有,只是一边有
非真则假,,非假则真
非真则假,,非假则真
面试题:&和&& 的区别
&&:只要前面有一个为false,后面所有表达式不再执行,效率高
&:全都要执行,效率低
&&:只要前面有一个为false,后面所有表达式不再执行,效率高
&:全都要执行,效率低
4,条件运算符(三目表达式)
语法为:条件表达式?表达式1:表达式2
如果结果为true,执行表达式1
结果为false,执行表达式2
如果结果为true,执行表达式1
结果为false,执行表达式2
面向对象
核心思想
Object(对象),是一个具体事物实例,啥都是对象,
变量
成员变量
类下,方法外的变量
局部变量
方法里声明的变量
参数也是局部变量
函数,方法是一回事儿,在函数里声明的变量也是局部变量,
类只能由变量和方法构成,别的东西不能放,
方法
成员方法
局部方法
实例化
类型(和类名必须完全相同)+名字 = new(关键字)+构造方法(跟前面类名相同)
(实例化对象)
(实例化对象)
递归,
自己调用自己,循环
构造方法(器)
特点
声明在类内部
方法名与类名一致的方法叫构造方法
构造方法不能声明返回值类型
可以包含参数,参数一般是创建对象实例必须依赖的条件(前提条件)
构造方法不能被继承
成员变量默认自动初始化
对象本身为null不会造成异常,但是访问对象里的时候,会产生异常
用来创造一个实例,实例化时,new后的就是构造方法
默认自动创建一个无参的构造方法
赋值符号(=)两边的类型必须是一样的,暂时
直接赋值,要用this. this代指这个类
方法的重载
方法名一样,但是参数的类型和数量不同
变为多个方法
引用的时候根据参数列表区分
定义有参方法的时候要定义出无参方法,因为不定义的话,会覆盖掉无参的方法
关键字
this
是对当前对象的引用,是运行期间对象本身
代表当前的类
代表当前的类
可以明确访问当前对象的属性或者方法
this(); 就是代表当前的无参构造
this 必须放在第一行
一般只用在构造方法里
子主题
子主题
数组
数组的创建
特点
具有连续性
具有下标索引(index),从0开始计数,
因为是从0开始计数,所以最大索引是元素数量-1
因为是从0开始计数,所以最大索引是元素数量-1
长度固定
直接使用大括号,用双引号包含元素,元素之间用逗号间隔
静态初始化
,固定了元素内容和数量
数组名 . length 是数组的长度
int[ ] 数组 = {
1,2,3
};
1,2,3
};
动态初始化
例:向一个int类型的数组中添加100个连续元素
int[] 名字 = new int [100];此时输出的是类型的默认值,整型可以使用for循环赋值
输出时要使用Arrays(工具类)中的 toString
int[] 名字 = new int [100];此时输出的是类型的默认值,整型可以使用for循环赋值
输出时要使用Arrays(工具类)中的 toString
数组中只能有一种数据类型,一旦定义,不能更改
一旦定义长度(元素的个数),不能更改
一旦定义长度(元素的个数),不能更改
遍历
循环输出数组中的每个元素
循环输出数组中的每个元素
二维数组
数组元素是数组的数组
语法:int[ ] [ ] 名字 = { {第一个数组} {第二个数组} {第三个数组} };
输出时使用for循环嵌套, System . out . println (数组名 [ 二维数组中的索引,出来的是数组里的数组] [ 前面输出的数组里的某个数])
面试题: 判断对错
int [ ] [ ] 1 = new int [ 4 ] [ ] ; 对
int [ ] [ ] 2 = new int [ ] [ ] { }; 极端写法, 也对,
int [ ] [ ] 3 = new int [ ] [ 4 ] ; 错
int [ ] [ ] 4 = new int [ 4 ] [ 4 ] ;标准写法,
动态初始化时,一维的长度必须定义,二维的可以不定义
int [ ] [ ] 1 = new int [ 4 ] [ ] ; 对
int [ ] [ ] 2 = new int [ ] [ ] { }; 极端写法, 也对,
int [ ] [ ] 3 = new int [ ] [ 4 ] ; 错
int [ ] [ ] 4 = new int [ 4 ] [ 4 ] ;标准写法,
动态初始化时,一维的长度必须定义,二维的可以不定义
数组的扩容
Arrays扩容方法
基于数组复制
语法: int [ ] arr = new int [ 3 ];
arr = Arrays . copyof(arr , arr . length+1);
System . out . println(arr . length);
arr = Arrays . copyof(arr , arr . length+1);
System . out . println(arr . length);
String 字符串
是一个类,
是引用数据类型
是引用数据类型
String 值是不可变字符串,
双等号比较的是在内存中的地址
不适合做字符串拼接,每次都是新创建的对象,消耗较大
继承
特点
子类继承父类的属性和方法,,可以直接调用
构造器不能继承
语法:extends 在类上面写 继承于谁,
方法的重写
必须有继承才能有重写
直接在子类里重新编写父类里的方法
重写的方法和被重写的方法,名称,参数列表,返回值类型,都必须一致
重写的是方法体里的内容,别的都一样
重写的是方法体里的内容,别的都一样
@override 标注,重写的
也是检查是否重写的,这个标注之下的必须是重写
也是检查是否重写的,这个标注之下的必须是重写
多态。一种事物,多种形态
作用于方法
作用于方法
三个必要条件
继承
重写
向上转型,作用于引用数据类型
父类引用指向子类的实例
封装
子主题
子主题
子主题
抽象类
具有抽象方法的类叫抽象类,用abstract定义,
抽象方法
只有方法的定义,没有方法的实现,定义抽象方法的 目的就是让 子类必须重写父类的抽象方法
使用:abstract 关键字修饰,并且没有方法体
使用: abstract 关键字修饰,包含抽象方法
使用: abstract 关键字修饰,包含抽象方法
包含抽象方法的类,就一定是抽象类
抽象类不能直接创建实例。可以定义引用变量
Shape shape = new Circle() 对
Shape shape = new Circle() 对
抽象类只能被继承,一个具体类继承一个抽象类,必须实现所有抽象方法
继承的缺点,一个类只能继承一个父类
增强for循环(for循环的一种)
只能用来遍历
只能用来遍历
for(String str : list){
System.out.println(str);
}
System.out.println(str);
}
接口
接口是特殊的抽象类
接口只能被实现(继承),一个类可以实现多个接口
实现接口,用 implements(关键字),实现是一种继承关系
只能有抽象方法,jdk1.8之后可以有普通方法,但是必须用default关键字修饰
包装类
八种基本数据类型所对应的引用数据类型
int—>Integer
有自动拆箱和装箱
基本数据类型和对应的引用数据类型的自动相互转换
API(方法)
常量池缓存
byte,short,int,long
-128~127
char
0~127
boolean
true/false
float/double,,没有
基本类型与包装类的区别
StringBuffer和SteingBuilder
字符串拼接
字符串拼接
都属于可变字符串
StringBuffer
适合用来做字符串拼接
子主题
StringBuilder
JDK1.5引入,适合做字符串拼接
在对大量字符串进行操作时,效率更高
集合
和数组的区别
集合
长度可动态变化
子主题
数组
长度固定不变
子主题
ArrayList
子主题
异常
异常树状图
Throwable
Error
仅靠程序无法恢复的严重问题
一般是环境,JVM的问题
仅靠程序无法恢复的严重问题
一般是环境,JVM的问题
VirtulMachineError
stackOverFlowError
栈溢出
栈溢出
OutOfMemoryError
AWTError
Exception
由java应用程序抛出和处理的非严重型错误
由java应用程序抛出和处理的非严重型错误
IOException
EoFException
FileNotFoundException
RuntimeException
ArrithmeticException
MissingResourceExceptin
ClassNotFoundException
NullPointerException
IllegalArgumentException
ArrayIndexOutOfBoundsException
Unkown Type Exception
java是把异常封装到对象里,
主要的
受检异常
抛出异常
解决异常
捕获异常 try catch finally
finally 是绝对要执行,那怕上面有错误,也会执行,必须放在catch之后
此处面试题:final:修饰符,修饰的类不能被继承,变量为常量,方法不能被重写
finally:属于异常里的最后执行,不管前面的是否报错都会执行
finalize:垃圾回收机制中的释放资源
finally:属于异常里的最后执行,不管前面的是否报错都会执行
finalize:垃圾回收机制中的释放资源
关闭资源,要在finally之后,
IO流
分为字节流和字符流, GDK里一个字符流等于两个字节流
UTF-8里一字符等于四到五个字节
UTF-8里一字符等于四到五个字节
操作文件
. exists() 判断文件是否存在
. isFile() 判断是否为文件
. isDirctory() 判断是否为目录
string getName() 获得文件的名称
String getAbsolutePath() 获得文件的绝对路径
long length() 获得文件的长度(字节数)
boolean createNewFile() 创建新文件,创建成功返回true,否则返回false,有可能抛出IOException异常,必须捕捉
throws IOException
throws IOException
boolean delete() 删除文件,
File [ ] listFiles() 返回文件夹内的子文件与子文件夹的数组
线程
优先级
资源紧张时,尽可能优先,并不能绝对优先
最大10,最小1,默认5
integer的引入数据类型
integer.MAX_VALUE int的最大值
MIN 最小值
MIN 最小值
long currentTimeMillis = System.currentTimeMillis(); 获取系统当前的时间
return+返回值
static,,写方法的时候用,,
13440
201.6
一个对象如果想实现一个功能,就必须继承一个父类,或者实现一个借口
增强for循环中不能做任何操作,只能遍历
关闭窗口(添加关闭监听器)
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
0 条评论
下一页