一、配置java环境
-
安装jdk
- 需要记住安装的路径!
-
配置环境变量
-
我的电脑–右键–属性–高级系统设置
-
环境变量–系统变量–JAVA_HOME(安装路径)
-
path:1.%JAVA_HOME%\bin (好像只需要有这个就可以)
2.%JAVA_HOME%\jre\bin(作用未知!)
-
-
检验环境是否成功:
- cmd–java -version
二、使用cmd运行java文件
-
新建一个java文件(后缀名.java)
-
在文件目录下使用cmd:
- java java文件全名–产生一个java文件.class文件
- javac java文件名
三、java基础知识
3.1、注释
- //
- /* */
- /** */
3.2、标识符
-
定义:所有的组成部分(类名,变量名。。。等)都需要名字。
-
所有的 标识符只能以字母、美元符号、或下划线开始
-
不能使用关键字作为变量名或方法名
-
大小写敏感
3.3、数据类型
- 基本类型
- 整数类型
- byte 1个字节
- short 2个字节
- int 4个字节
- long 8个字节
- 浮点类型
- float 4个字节
- double 8个字节
- 字符类型
- char 2个字节
- boolean类型
- true/false 1位
- 引用类型
- 类
- 接口
- 数组
3.4、类型转换
- 原因:java是强类型语言,进行运算时,需要类型转换
低 ---------------------------------------------------------------------------> 高
byte,short,char–>int–>long–>float–>double
-
运算中,不同类型的数据先转化为同一类型,在进行运算。
- 自动转换(低----高)
- 强制转换(高----低):(类型名)变量名
-
注意点:不能对布尔值进行转换。
3.5、变量
-
变量声明是一条完整语句,必须以分号结束。
-
变量的作用域:
- 类变量(静态变量):static修饰
- 实例变量(成员变量):若没有初始化值,有默认值 0/0.0/null/false
- 局部变量:定义在方法中,只在方法生效,必须声明和初始化值。
3.6、常量
-
final 修饰,常量名一般全用大写命名
-
修饰符,不存在先后顺序
3.7、运算符
- 二元运算符:运算的结果为参与运算的最高类型
- 关系运算符:
- 一元运算符:a++ 先用后加 ++a 先加后用
- 逻辑运算符
- 位运算符:^(异或):相同为0,不同为1
- 位移运算符:<< *2 >>/2
- 复合运算符
- 三元运算符
- 优先级:运算符优先级
3.8、Scanner对象
-
作用:通过Scanner类来获取用户(键盘)输入
Scanner sc = new Scanner(System.in);
-
获取内容:
- next():在读到有效数据之前,空格自动忽略。若再次读到空格,则将其当分隔符
- nextLine():能够获取一行信息,包括空格!
-
判断用户是否输入了数字:sc.hasNextDouble()
while (sc.hasNextDouble()){ //将精度设置为最高,自动转换! double x = sc.nextDouble(); }
3.9、流程控制
3.9.1、顺序结构
- 它是任何一个算法都离不开的一种基本算法结构
3.9.2、选择结构
-
if的多种结构
-
switch多选择结构
//switch()括号中的类型为:byte,short,char,int,String(Java SE7) //switch( ){case :} 类型必须一致 switch (grade){ case 'A': System.out.println("优秀"); break; //可选(建议写上,只会执行当前case) case 'B': System.out.println("良好"); break; default: System.out.println("不对");
3.9.3、循环结构
-
while循环
-
do…while循环
这两种循环的区别:
-
while先判断后执行,do…while先执行后判断!
-
do…while保证循环体至少会被执行一次!
- for循环
for(初始化;布尔表达式;更新){
//代码语句
}
-
增强for循环(foreach循环)
//主要用于数组或集合,没有下标 for(声明语句:表达式){ //代码句子 }
break与continue使用区别:
-
break:
- 用于强行退出循环,不执行循环中剩余语句
-
continue:
- 跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定
-
标签:用在循环语句之前
3.10、方法
-
方法的声明
-
方法的调用:实际参数传递给形式参数,实际参数和形式参数的类型要对应!
- 值传递
- 引用传递
-
方法重载
- 方法名称必须相同;
- 参数列表必须不同(个数,类型,排列顺序)
- 方法的返回类型可以相同也可以不相同
- 仅仅返回类型不同不足以成为方法的重载
-
命令行传参
-
可变参数:在方法声明中,在指定参数类型后加一个省略号(···)。
-
一个方法只能指定一个可变参数,他必须是方法的最后一个参数。
-
任何普通的参数必须在他之前声明。
-
-
递归:
- 递归条件:什么时候需要调用自己
- 递归出口:什么时候 不调用 自己
3.11、数组
-
定义:相同数据类型的有序集合
-
声明:
- 动态初始化:包含默认初始化
- 静态初始化(常用)
-
特点:
- java中对象是在堆中,数组对象本身是在堆中的
- 有length属性,可以获取长度
- 合法区间:[0,length-1],越界抛出ArrayIndexOutOfBoundsException
-
二维数组的遍历
- 2层for循环
-
Arrays类
-
冒泡排序
-
稀疏数组
四、java面向对象
本质:以类的方式组织代码,以对象的方式封装数据
4.1、类与对象的关系
4.2、创建与初始化对象
4.3、构造器
4.4、封装
- 属性私有,方法公共get/set
4.5、继承
- super:只能在继承中使用,调用父类的构造方法,只出现在子类方法或构造器
- this:代表本身这个类
- 方法重写:需要有继承,方法与父类一致,方法体不同!
- 静态方法:方法的调用只和定义的类型有关!
- 非静态方法:子类重写了父类的方法,将执行子类的方法
4.6、多态
-
原理:
- 同一方法根据发送对象的不同采取多种不同的行为方式
- 对象能执行哪些方法,主要看对象左边的类型,和右边关系不大!
- 子类重写了父类的方法,将执行子类的方法
-
特点:
- 多态是方法的多态,属性没有多态
- 继承关系,方法需要重写,父类引用指向子类对象!
-
instanceof关键字:x与y是否是父子关系
-
作用:
-
父类引用–>子类对象 (左引用–>右对象)
-
(右对象)子转父:向上转型,自动转换,可能会丢失一些方法
Person person = new Student();
-
(右对象)父转子:向下转型,强制转换,(子类型)父对象
Student stu = (Student) new Person();
-
4.7、static
-
属性与方法推荐通过类调用
-
静态代码块:只执行一次;
-
执行顺序:静态代码块–>匿名代码块–>构造方法
-
静态导入包:import static java.lang.Math.PI;
4.8、抽象类
- 声明:public abstract class 类名{}
- 抽象方法:只有方法头,没有方法体
- 抽象类可以写普通方法
- 抽象类不能new,但是其存在构造器,依靠子类
- 继承抽象类的子类,必须实现抽象类的所有抽象方法
4.9、接口
- interface 声明接口
- implements 实现接口 (需要实现接口中的所有方法)
4.10、内部类
-
匿名内部类
-
用于声明时,即new的时候
-
内部类的调用:
- 通过外部类来实例化内部类
4.11、异常机制
-
错误(Error) --jvm抛出
-
异常(Exception)–程序逻辑
-
try
-
catch
-
fiinally
-
throw:主动抛出异常,在方法中使用
-
throws :在方法上抛出异常
4.12、自定义异常
-
继承Exception类
-
创建自定义异常类
-
在方法中通过throw关键字抛出异常对象
-
如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;
否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作
-
在出现异常方法的调用者中捕获并处理异常
-
-
toString():异常的打印信息
五、GUI编程
5.1、Awt
-
Frame
- 设置可见性
- 设置窗口大小
- 设置背景颜色
- 设置初始位置
- 设置大小固定
-
面板Panel
- 设置布局
- 设置坐标,相对于frame
- 面板无法单独显示,必须添加到某个容器中
-
布局管理器
- 流式布局
- 东西南北中
- 表格布局 Grid
-
事件监听
- 窗口监听
- TextField监听
- 鼠标监听
- 键盘监听
5.2、Swing
-
JFrame
-
this.getContentPane()
-
JDialog
-
JLabel
- ICON
-
JPanel
-
JScrollPane
-
JButton
- JRadioButton
- JCheckBox
-
JComboBox
-
jList
-
JTextField
-
JPasswordField
-
设置大小固定
-
面板Panel
- 设置布局
- 设置坐标,相对于frame
- 面板无法单独显示,必须添加到某个容器中
-
布局管理器
- 流式布局
- 东西南北中
- 表格布局 Grid
-
事件监听
- 窗口监听
- TextField监听
- 鼠标监听
- 键盘监听
5.2、Swing
-
JFrame
-
this.getContentPane()
-
JDialog
-
JLabel
- ICON
-
JPanel
-
JScrollPane
-
JButton
- JRadioButton
- JCheckBox
-
JComboBox
-
jList
-
JTextField
-
JPasswordField
-
JTextArea