开发工具IntelliJ IDEA
1. IDEA 软件安装
双击ideaIU-2020.1.exe
进入安装
欢迎界面——>选择安装路径——>配置安装选项——>开始菜单——>安装完毕
2. IDEA 软件使用
2.1 基本设置
新建工程
不导入任何设置——>选择 Create New Project
——>点击 new
按钮,配置安装的 JDK8
版本——>不使用模板——>为工程起名字 ,并存储到 目标目录下——> 项目已经创建好
如果再新建项目,点击 File
——>new
——>Project
2.2 创建包和类
展开创建的工程,在源代码的 录 src
上,鼠标右键,选择package
,输入包名 com.sxt.demo
,
点击确定。
在创建好的包上,鼠标右键,选择 new
——>class
创建类,键入类名。
File
——>Close Project
回到启动界面
运行程序,在代码编辑区鼠标右键,选择 `Run HelloWorld`
目录层级
- .idea 目录和 demo.iml 和我们开发无关,是IDEA工具自己使用的
- out 目录是存储编译后的.class文件
- src 目录是存储我们编写的.java源文件
2.3 IDEA 常用快捷键
Alt+Enter
导入包,自动修正代码
Ctrl+Y
删除光标所在行
Ctrl+D
复制光标所在行的内容,插入光标位置下面
Ctrl+Alt+L
格式化代码
Ctrl+/
单行注释
Ctrl+Shift+/
选中代码注释,多行注释,再按取消注释
Alt+Ins
自动生成代码,toString,get,set等方法
Alt+Shift+ 上下箭头
移动当前代码行
一、基础知识
1.1 Java语言概述
SE(JavaSE),standard edition,标准版。
EE(JavaEE),enterprise edition,企业版。
ME(J2ME),micro edition,主要用于移动设备、嵌入式设备上的java应用程序。
1.2 计算机基础知识
二进制
二进制数系统中,每个0或1就是一个位,叫做bit(比特)。
字节
8 bit = 1 B
1024 B =1 KB
1024 KB =1 MB
1024 MB =1 GB
1024 GB = 1 TB
常用DOS命令
查看当前文件夹 dir
进入文件夹命令 cd 文件夹名
退出文件夹命令 cd..
退出到磁盘根目录 cd\
清屏 cls
1.3 开发环境
-
JDK 开发工具包
-
JRE 运行环境
-
JVM 虚拟机
三者关系: JDK > JRE > JVM
配置环境变量
记事本编写Java源程序
-
编写:
文件名:xxx.java
类名和文件名保持一致,大小写相同
-
编译:
javac Java源文件名.后缀名
-
运行:
Java 类名
- 编译 :是指将我们编写的Java源文件翻译成JVM认识的class文件,在这个过程中, javac 编译器会检查我们所写的程序是否有错误,有错误就会提示出来,如果没有错误就会编译成功。
- 运行 :是指将 class 文件 交给JVM去运行,此时JVM就会去执行我们编写的程序了
1.4 常量、变量和数据类型
常量:固定不变的数据
变量:不赋值不能使用
数据类型
基本数据类型:整数、浮点数、字符、布尔
引用数据类型:类、数组、接口
数据类型转换
自动转换 :将 取值范围小的类型 自动提升为 取值范围大的类型 。
byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
强制类型转换 :将 取值范围大的类型 强制转换成 取值范围小的类型 。
数据类型 变量名 = (数据类型)被转数据值
1.5 碎碎念
-
main 方法是程序的入口和起点
-
注释:// 或 /* */
-
标识符命名规则: 数字(不能开头)、字母、下划线及美元符
-
命名规范:
- 类名规范:首字母大写,后面每个单词首字母大写(大驼峰式)。
- 方法名规范: 首字母小写,后面每个单词首字母大写(小驼峰式)。
- 变量名规范:全部小写。
二、流程控制
顺序结构:顺序执行,根据编写的顺序,从上到下运行
2.1 判断语句(if)
//第一种格式
if(关系表达式){
语句体;
}
//第二种格式
if(关系表达式) {
语句体1;
}else {
语句体2;
}
//第三种格式
if (判断条件1) {
执行语句1;
} else if (判断条件2) {
执行语句2;
}
...
}else if (判断条件n) {
执行语句n;
} else {
执行语句n+1;
}
if 语句和三元运算符的互换
public static void main(String[] args) {
int a = 10;
int b = 20;
//定义变量,保存a和b的较大值
int c;
if(a > b) {
c = a;
} else {
c = b;
}
//可以上述功能改写为三元运算符形式
c = a > b ? a:b;
}
2.2 选择语句(switch)
switch(表达式) {
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
- switch 语句中,表达式的数据类型可以是byte,short,int,char,enum(枚举),字符串。
2.3 循环语句(for、while、do…while)
for(初始化表达式; 布尔表达式; 步进表达式){
循环体
}
例:循环计算1-100之间的和
public static void main(String[] args) {
//1.定义一个初始化变量,记录累加求和,初始值为0
int sum = 0;
//2.利用for循环获取1‐100之间的数字
for (int i = 1; i <= 100; i++) {
//3.判断获取的数组是奇数还是偶数
if(i % 2==0){
//4.如果是偶数就累加求和
sum += i;
}
}
//5.循环结束之后,打印累加结果
System.out.println("sum:"+sum);
}
初始化表达式
while(布尔表达式){
循环体
步进表达式
}
例:循环计算1-100之间的和
public static void main(String[] args) {
//使用while循环实现
//定义一个变量,记录累加求和
int sum = 0;
//定义初始化表达式
int i = 1;
//使用while循环让初始化表达式的值变化
while(i<=100){
//累加求和
sum += i ;
//步进表达式改变变量的值
i++;
}
//打印求和的变量
System.out.println("1‐100的和是:"+sum);
}
初始化表达式
do{
循环体
步进表达式
} while(布尔表达式);
例:输出十次HelloWorld
public static void main(String[] args) {
int x=1;
do {
System.out.println("HelloWorld");
x++;
}while(x<=10);
}
- 在已知循环次数的时候使用 for,循环次数未知的时使用while
2.4 跳出语句
break:终止 switch或者循环
- 在选择结构 switch语句中
- 在循环语句
continue:结束本次循环,继续下一次的循环,只在循环语句中。
三、数组
3.1 数组定义
格式一:
数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度];
例: int[] arr = new int[3];
格式二:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};
例:int[] arr = new int[]{1,2,3,4,5};
格式三:
数据类型[] 数组名 = {元素1,元素2,元素3...};
例:int[] arr ={1,2,3,4,5};
3.2 数组访问
为数组中的元素赋值 数组名 [索引]=数值
获取出数组中的元素 变量 =数组名[索引]
数组的长度 数组名 .length
数组最大索引值 数组名 .length-1
数组越界异常 ArrayIndexOutOfBoundsException
数组空指针异常 NullPointerException
3.3 数组遍历
普通for循环
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
增强for循环
for(数组元素类型 变量名(临时) : 数组名){
System.out.println(数组名);
}
例:
for(String temp : names){
System.out.println(temp);
}
3.4 数组作为方法参数和返回值
数组作为方法参数传递,传递的参数是数组内存的地址
public static void main(String[] args) {
int[] arr = { 1, 3, 5, 7, 9 };
//调用方法,传递数组
printArray(arr);
}
/*
创建方法,方法接收数组类型的参数
进行数组的遍历
*/
public static void printArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
数组作为方法的返回值,返回的是数组的内存地址
public static void main(String[] args) {
//调用方法,接收数组的返回值
//接收到的是数组的内存地址
int[] arr = getArray();
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
/*
创建方法,返回值是数组类型
return返回数组的地址
*/
public static int[] getArray() {
int[] arr = { 1, 3, 5, 7, 9 };
//返回数组的地址,返回到调用者
return arr;
}
注意:方法的参数为基本类型时,传递的是数据值. 方法的参数为引用类型时,传递的是地址值.
四、方法
就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。
4.1 方法定义
修饰符 返回值类型 方法名 (参数列表){
方法体;
}
- 方法定义在类中
- 方法不能嵌套定义
- static修饰符 可以在主方法中直接调用方法名
4.2 方法调用
方法名 (参数列表);
直接调用: 直接写方法名调用
public static void main(String[] args) {
print();
}
public static void print() {
System.out.println("方法被调用");
}
赋值调用: 调用方法,在方法前面定义变量,接收方法返回值
public static void main(String[] args) {
int sum = getSum(5,6);
System.out.println(sum);
}
public static int getSum(int a,int b) {
return a + b;
}
输出语句调用:在输出语句中调用方法
System.out.println( 方法名()) ;
4.3 方法重载
在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。
参数列表满足其一即可:个数不同,数据类型不同,顺序不同。
4.4 碎碎念
- return意味着方法结束,后面将不再执行。
- 方法的参数为基本类型时,传递的是数据值. 方法的参数为引用类型时,传递的是地址值.
五、类和对象
类是对象的模板,对象是类的实体 。
5.1 类的定义格式
public class ClassName {
//成员变量
//成员方法
}
定义类 :就是定义类的成员,包括成员变量和成员方法。
成员变量 :和以前定义变量几乎是一样的。只不过位置发生了改变。在类中,方法外。
成员方法 :和以前定义方法几乎是一样的。只不过把static去掉。
构造器: 对象在创建时会自动调用。系统会自动提供,也可以自己写。
// 构造器没有返回值,没有static,连void都没有
// 构造器的名字必须和类名保持一致
Teather(){
}
//构造器可以重载
Teather(String name, int age, String degree){
this.name = name;
this.age = age;
this.degree = degree;
}
5.2 对象的使用格式
创建对象:
类名 对象名 = new 类名();
使用对象访问类中的成员:
对象名.成员变量;
对象名.成员方法();
对象创造(new)内部过程:
- 根据类模板去堆中开辟新的空间,并且对属性进行系统的初始化(可以给定值进行初始化)
- 调用构造器(方法)对 对象进行初始化
- 返回开辟的空间的首地址
一样的。只不过位置发生了改变。在类中,方法外。
成员方法 :和以前定义方法几乎是一样的。只不过把static去掉。
构造器: 对象在创建时会自动调用。系统会自动提供,也可以自己写。
// 构造器没有返回值,没有static,连void都没有
// 构造器的名字必须和类名保持一致
Teather(){
}
//构造器可以重载
Teather(String name, int age, String degree){
this.name = name;
this.age = age;
this.degree = degree;
}
5.2 对象的使用格式
创建对象:
类名 对象名 = new 类名();
使用对象访问类中的成员:
对象名.成员变量;
对象名.成员方法();
对象创造(new)内部过程:
- 根据类模板去堆中开辟新的空间,并且对属性进行系统的初始化(可以给定值进行初始化)
- 调用构造器(方法)对 对象进行初始化
- 返回开辟的空间的首地址