1. java开发环境:
- java编译运行过程:
- 编译期:.java源文件,经过编译,生成.class字节码文件
- 运行期:JVM加载.class并运行.class(0和1)
> 特点:跨平台、一次编译到处使用
- 名词:
- JVM:java虚拟机
加载.class并运行.class
- JRE:java运行环境
除了包含JVM以外还包含了运行java程序所必须的环境
JRE = JVM+系统类库(小零件)
- JDK:java开发工具包
除了包含JRE以外还包含了开发java程序所必须的命令工具
JDK = JRE+编译、运行等命令工具
> 总结:
>
> 1. 运行java程序的最小环境为:JRE
> 2. 开发java程序的最小环境为:JDK
2. Idea:
- JetBrains公司的,分为社区版(免费的)和终级版(收费的)
- 开发步骤:
- 新建Java项目/工程------------------------小区
- 新建Java包-----------------------------------楼+单元
- 新建Java类-----------------------------------房子
- main中:System.out.println("hello world");
```java
package day01; //声明包day01(楼+单元)
public class HelloWorld { //声明类HelloWorld(房子)
//主方法,为程序的入口(房子大门口),程序的执行从main开始,main结束则程序结束
public static void main(String[] args) {
//输出hello world
//1)严格区分大小写
//2)所有符号必须是英文模式的
//3)每句话必须以分号结尾
System.out.println("hello world"); //双引号中的原样输出
System.out.println("欢迎大家");
}
}
```
- 注释:解释性文本(计算机不执行)
3. 变量:存数的
- 声明:相当于在银行开帐户
- 初始化:相当于给帐户存钱
- 访问:访问的是帐户里面的钱
- 对变量的访问就是对它所存的那个数的访问
- 变量在使用之前,必须声明并初始化
- 命名:给帐户起名
- 只能包含字母、数字、_和$符,不能以数字开头
- 严格区分大小写
- 不能使用关键字
- 允许中文命名,但不建议,建议"英文的见名知意"、"小驼峰命名法"
4. 八种基本数据类型:byte、short、int、long、float、double、boolean、char
- int:整型,4个字节,-21个多亿到21个多亿
- 整数直接量默认为int类型,但不能超出范围,若超范围则发生编译错误
- 两个整数相除,结果还是整数,小数位无条件舍弃(不会四舍五入)
- 运算时,若超范围则发生溢出,溢出不是错误,但是需要避免
- long:长整型,8个字节,-900万万亿多到900万万亿多
- 长整型的直接量需在数字后加L或l
- 运算时若有可能溢出,建议在第1个数字后加L
- double:浮点型,8个字节,很大很大很大
- 小数直接量默认为double型,若想表示float,需在数字后加F或f
- 不能表示精确数字,运算时有可能会发生舍入误差,精确场合不能使用
- boolean:布尔型,1个字节
- 只能存储true或false
- char:字符型,2个字节
- 采用Unicode编码格式,一个字符对应一个码
表现的形式是字符char,但本质上是码int (0到65535)
(ASCII码:'a'----97 'A'----65 '0'----48)
- 字符直接量必须放在单引号中,只能有1个
- 特殊符号需要通过\来转义
5. 类型间的转换:
- 数据类型由小到大依次为:byte<short<int<long<float<double<char
- 两种方式:
- 自动/隐式类型转换:小类型转为大类型
- 强制类型转换:大类型转为小类型
- 语法:(要转换成为的数据类型)变量
- 注意:强转有可能溢出或丢失精度
- 两点规则:
- 整数直接量可以直接赋值给byte,short,char,但不能超出范围
- byte,short,char型数据参与运算时,系统会一律先将其转为int再运算
6. 运算符:
- 算术:+、-、*、/、%、++、--
- 关系:>、<、>=、<=、==、!=
- 逻辑:&&、||、!
- 赋值:=、+=、-=、*=、/=、%=
- 字符串连接:+
- 条件/三目:boolean?数1:数2
7. 分支结构:基于条件执行的代码
- if结构:1条路
- if...else结构:2条路-----------------------2选1
- if...else if结构:多条路-------------------多选1
- switch...case结构:多条路
优点:效率高、结构清晰
缺点:只能对整数判断相等
break:跳出switch
> 注意:switch能作用在byte、short、char、int、String、枚举
8. 循环:反复多次执行一段相同或相似的代码
9. 循环三要素:
- 循环变量的初始化
- 循环的条件(以循环变量为基础)
- 循环变量的改变(向着循环的结束变)
> 循环变量:在整个循环过程中所反复改变的那个数
10. 循环结构:
- while结构:先判断后执行,有可能一次都不执行
- do...while结构:先执行后判断,至少执行一次
> 第1要素与第3要素的代码相同时,首选do...while
- for:应用率最高、与次数相关的循环
1)语法:
// 1 2 3
for(要素1;要素2;要素3){
语句块/循环体---------------反复执行的代码 4
}
2)执行过程:
1243243243243243...2为false时,for循环结束
11. 三种结构如何选择:
- 先看循环是否与次数有关:
- 若有关--------------------------------------------------直接上for
- 若无关,再看要素1与要素3是否相同:
- 若相同---------------------------------------------直接上do...while
- 若不同---------------------------------------------直接上while
12. break:跳出循环
continue:跳过循环体中剩余语句而进入下一次循环
13. 嵌套循环:
- 循环中套循环,常常多行多列时使用,一般外层控制行,内层控制列
- 执行过程:外层循环走一次,内层循环走所有次
- 建议:嵌套层次越少越好,能用一层就不用两层,能用两层就不用三层
- break只能跳出当前一层循环
14. 数组:
- 是一种引用数据类型
- 相同数据类型元素的集合
- 定义:
- 初始化:--------------------初始化的是数组中的元素
- 访问:----------------访问的是数组中的元素
- 通过(数组名.length)可以获取数组的长度(元素个数)
- 通过下标/索引来访问数组中的元素,下标从0开始,最大到(数组长度-1)
- 数组的遍历/迭代:从头到尾挨个走一遍
15. 方法:函数、过程
- 作用:封装一段特定的业务逻辑功能
- 建议:尽可能独立,一个方法只干一件事
- 可以被反复多次调用
- 减少代码重复,有利于代码维护
- 何时用:一个业务有很多地方使用,只要是一个独立的功能就一定得抽到方法中
16. 方法的定义:五要素
- 修饰词 返回值类型 方法名(参数列表) {
方法体
}
17. 方法的调用:
- 无返回值:方法名(有参传参);
- 有返回值:数据类型 变量 = 方法名(有参传参);
18. return:
- return 值; //1)结束方法的执行 2)返回结果给调用方----------用在有返回值的方法中
- return; //1)结束方法的执行--------------用在无返回值的方法