JAVA1
IntelliJ IDEA简介
简称IDEA,字面意思是“智能理念”,是JetBrains公司的产品。它是业界公认最好的、也是最智能的Java集成开发环境(IDE)
第一个Java程序:HelloWorld
程序代码解释
Java程序的最小单位是类,一个Java程序至少拥有一个类
Java程序的入口是main方法
注意事项:
- main方法的格式是固定的,不能更改
Java程序开发与运行原理
编写 ——> 编译 ——> 运行:
- 编写源文件(.java)
- 通过javac命令编译成字节码文件(.class)
- 通过java命令运行字节码文件,在控制台打印结果
IDEA基本配置
(在u盘里有教程pdf)
IDEA常用快捷键
Java语言编码规范
- 大括号成对、对齐写
- 左大括号前有空格
- 代码缩进
- 方法和程序块之间空行
- 并排语句加空格
- 运算符两侧加空格
Java核心_常量、变量
注释
为了让不同的程序员快速理解对方的编码内容
注释的分类:
- 单行注释 格式: // 注释文字
- 多行注释格式: /* 注释文字 */
- 文档注释格式: /** 注释文字 */
关键字
被Java语言赋予特定含义的单词
组成关键字的字母全部小写 常见的代码编辑器,对关键字有特殊的颜色标记
常量
在程序执行的过程中,其值不可以发生改变的量
常量的分类:
字面值常量(掌握)
- 字符串常量 “HelloWorld” (双引号)
- 字符常量 ‘a’, ‘0’ (单引号)
- 整数常量 12, -23
- 小数常量 12.34
- 布尔常量 true, false F:空常量(了解) null
自定义常量(了解)
用final关键字修饰的量(面向对象部分讲解)
变量
在程序执行的过程中,其值可以在某个范围内发生改变的量。 变量的本质,是内存中的一小块区域。
变量的定义格式:数据类型 变量名 = 初始化值;
各部分的含义是什么?
- 数据类型:变量变化的范围就是数据类型
- 变量名:每个变量都有一个名字,方便存取。
- 初始化值:使用变量前,需要给变量赋值
数据类型及类型转换
数据类型
变量变化的范围就是数据类型
1.数据类型的分类:
- 基本数据类型(四类八种)byte、short. int、 long. char , float、double , boolean
- 引用数据类型(对象类型)类、接口、数组
**2.変量的作用域:**只在它(定乂的位置)所属的代码块内有效
代码块: 一对大括号范围内的代码,称カ一个代码块
3.変量定义和使用中的注意事项:
A:変量未赋值,不能使用
B:変量只在它所属的范围内有效
C:一行上可以定乂多个変量,但是不建议
long l = 100L;
float f = 10.3F;
为什么需要八种基本数据类型?
- 设计多种数据类型的原因是为了更充分的利用内存空间,提高内存使用的效率。
计算机存储数据的形式
计算机中最小的存储单元是字节(Byte,通常用B表示),每个字节包含8个位(bit,又叫“比特位”通常用b表示,值
为0或1)。
1B(字节) = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
数据类型转换
不同类型的数据之间可能会进行运算,而这些数据取值范围不同,存储方式不同,直接进行运算可能会造成数据损
失,所以需要将一种类型转换成另外一种类型再进行运算。
数据类型转换的分类
byte cc= (byte) (a+b);
当且仅当大类型数据可以转换为小类型数据时,才进行转换,否则会造成精度损失。
自动类型转换顺序如下:
标识符
给类、方法、变量、常量等起名字的字符序列,就是标识符。
通俗地说,标识符就是在编程中程序员给类、方法、变量、常量等起的名字。
标识符的组成部分
英文大小写字母、数字、下划线( _ ) 和美元符号( $ )
标识符的定义规则
- 不能以数字开头
- 不能是关键字
- 严格区分大小写
标识符的命名规范
- 类和接口:首字母大写,如果有多个单词,每个单词首字母大写:HelloWorld,Student
- 变量和方法:首字母小写,如果有多个单词,从第二个单词开始首字母大写:getName, studyJava
- 常量名(自定义常量):所有字母都大写,多个单词用下划线隔开(_):MAX_VALUE
- 包名:全部小写,如果有多级,用点号(.)隔开,遵循域名反写的格式:cn.itcast.demo
- 总结:驼峰命名,见名知意
Java核心_运算符
运算符概述
运算符:对常量和变量进行运算操作的符号
表达式:用运算符把常量或者变量连接起来的式子称为表达式。
表达式类型:表达式的类型为表达式运算结果的数据类型。
举例:整型表达式: 1+2 10*20
算术运算符
ASCII码:0:48; a:97; A:65
int a = 10;
char ch = 'a'; //97
System.out.println(a + ch); //107
System.out.println("hello" + "world"); //"helloworld"
System.out.println("hello" + 10); //"hello10"
System.out.println("hello" + 10 + 20); //"hello10" + 20 --> "hello1020"
System.out.println(10 + 20 + "hello"); //30 + "hello" --> "30hello"
自增和自减(++和–)运算
赋值运算符
int a=10; a+=2;
short s=1; s+=1;
扩展赋值运算符的好处:省略了强制类型转换的操作
关系运算符
,< ,==,!=,>-,<=
逻辑运算符
&&
||
!
三元运算符
(关系表达式) ? 表达式1 : 表达式2
int max = (a > b) ? a : b;
Java核心_流程控制之选择结构
Scanner的基本使用
扫描器。即可以通过Scanner类扫描用户在控制台录入的数据
步骤:1. 导包 2. 创建键盘录入对象 3. 接收数据
import java.util.Scanner; //1
Scanner sc=new Scanner(System.in); //2
int i=sc.nextInt(); //3
流程控制结构概述
程序的结果跟代码的执行顺序紧密相关,通过使用一些特定的语句控制代码的执行顺序从而完成特定的功能,这就是流程控制结构。
分类:
- 顺序
- 选择
- 循环
顺序结构:即程序按照代码的顺序从上往下、从左往右依次执行的代码结构。
选择结构:根据不同的条件选择不同的代码来执行的代码结构。
循环结构:使一部分代码按照次数或一定的条件反复执行的一种代码结构。
流程控制结构之选择结构
选择结构要先判断条件是否成立,条件成立则执行一部分代码,不成立则执行另外一部分或结束代码,所以选择结构也叫判断结构。
分类:if语句 switch语句
选择结构if语句
略了。。。
三种导包方式:手动导包 ; 点击鼠标自动生成 ; 快捷键:Ctrl + Shift + O
选择结构switch语句
switch的表达式的取值类型可以是:byte,short,int,char,
jdk5以后可以是枚举,jdk7可以是String
(枚举指的是一系列数目可数的数据。比如每周的星期,每年的月份。)
switch(表达式) {
case 值1:语句体1;break;
case 值2:语句体2;break;
// ...
default:语句体n+1;
break;
}
Java核心_流程控制之循环结构
循环结构的概念和分类
循环,即事物周而复始的变化。 循环结构,使一部分代码按照次数或一定的条件反复执行的一种代码结构。
循环结构的分类
- for循环
- while循环
- do…while循环
for循环
for(初始化语句; 判断条件语句; 控制条件语句) {
// 循环体
}
while循环
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
初始化语句可以省略 控制条件语句可以省略
do…while循环
初始化语句;
do {
循环体语句;
控制条件语句;
} while(判断条件语句);
while小括号后的分号不可省略.do…while循环的循环体语句至少执行1遍
三种循环的区别
/*
1. 格式不同.
2. 初始化语句不同
3. 循环体的执行次数不同.
4. 使用场景不同.
*/
//案例: 分别通过三种循环打印1~5之间的数字
//for循环
for(int a = 10; a <= 5; a++) {
System.out.println("a: " + a);
}
//System.out.println(a); 这样写不行, 因为for循环执行结束后, 初始化条件就不能使用了.
System.out.println("-------------------------");
//while循环
int b = 10;
while(b <= 5) {
System.out.println("b: " + b);
b++;
}
//System.out.println("b::::: " + b);
System.out.println("-------------------------");
//do..while循环: 不管判断条件是否成立, 循环体都会先执行一次.
int c = 10;
do{
System.out.println("c: " + c);
c++;
}while(c <= 5);
//System.out.println("c::::: " + c);
}
}
死循环
for (; ; ) {
//循环体,根据实际需求结束循环
}
while (true) {
//循环体,根据实际需求结束循环
}
break和continue
break :中断,用于switch语句和循环语句: 在switch语句中,表示结束switch代码块 在循环语句中,表示结束循环
continue:继续,用于循环语句,表示结束本次循环,继续下次循环
循环嵌套:在一个循环体语句中包含另一个循环语句时,称为循环嵌套
Random类的简单使用
- 导包 2. 创建键盘录入对象 3. 获取随机数
import java.util.Random;
Random r=new Random();
int num=r.nextInt(10);//10是范围
Java核心_方法和数组
方法概述
方法:也叫函数,是完成特定功能的代码块。 简单来说,一个方法就是一个功能、一个动作或一种行为。
当一些代码被反复使用时,可以把它们提取出来,放到一个方法里,以方法的形式来使用这些代码。
大大提高了代码的复用性,方便维护。
方法的格式
修饰符:public static
返回值类型:方法执行结果的数据类型
方法名:方法的名称,符合标识符命名规则即可
参数列表:方法执行需要的条件。
参数类型:可以是基本类型,也可以是引用类型
参数名:即变量名
方法体语句:完成特定功能的代码
return:意思是返回,用于结束方法。
返回值:方法执行之后的结果,返回给方法的使用者。若方法没有返回值,则它的返回值类型为void,比如main方法
方法的定义和调用
定义一个方法:
- 确定方法名
- 确定返回值类型
- 确定参数列表
public static int sum(int a,int b){
int c = a + b;
return c;
}
使用方法的过程称为方法的调用
int x=sum(4,3); //main方法中
方法调用时,若不关心方法的返回结果,可以直接调用,省略接收返回值的动作
方法重载
当实现的功能相同,但具体的实现方式不同时,我们可以通过定义名称相同,参数(条件)不同的方法,来更好的识别和管理类中的方法。
在同一个类中的多个方法,它们的方法名相同,参数列表不同,这样的情况,称为方法重载。方法重载与修饰符和返回值类型无关。
参数的个数不同 / 对应位置的参数类型不同。
方法签名:方法名 + 参数列表
public static int sum(int a, int b) {
return a + b;
}
public static long sum(long a, long b) {
return a + b;
}
public static double sum(double a, float b, int c) {
return a + b + c;
}
哪些方法是重载关系:136,248,57
数组概述
为了存储多个数据值。
数组是用来存储同一种数据类型多个元素的容器。
数据类型:可以是基本类型,也可以是引用类型
容器:比如教室、衣柜、纸箱等,可以存放多个事物
数组的定义和访问
数组的定义格式一:
数据类型[ ] 数组名 = new 数据类型[长度];
数组的定义格式二:
数据类型[ ] 数组名 = new 数据类型[]{元素1, 元素2, 元素3…};
定义时元素是确定的,避免内存空间的浪费
数组的定义格式三:
数据类型[ ] 数组名 = {元素1, 元素2, 元素3…};
格式三是格式二的变形,简化了代码编写
int[] arr1 = new int[3]; //格式一
int[] arr2 = new int[]{1, 2, 3}; //格式二
int[] arr3 = {1, 2, 3}; //格式三
数组的访问
通过数组的索引访问数组的元素
索引:也叫下标、脚标,是数组元素距离数组起始位置的偏移量
第一个元素的偏移量为0,所以数组的索引从0开始
格式:数组名[索引]
取值:数组名[索引]
赋值:数组名[索引] = 值;
arr1[1]=3;
1:数组的最大索引为数组长度-1
2:数组中未手动赋值的元素,有默认值0
3:直接输出数组变量名,得到的是数组的内存地址值
数组的初始化
在内存中为数组开辟连续空间并为每个元素赋值的过程
内存:计算机的重要组件,用于程序运行中临时存储数据。
连续空间:数组元素在内存空间中的存放位置是连续的
动态初始化(格式一):只指定长度,由系统给出默认值 整数型: 0 浮点型: 0.0 字符型: ‘\u0000’ (空字符) 布尔型: false 引用类型:null
静态初始化(格式二、三):给出初始化值,由系统决定数组长度
Java程序的内存分配
- 方法区:存储可运行的class文件,包含方法,静态成员,常量等(面向对象部分详解)
- 栈:方法运行时使用的内存,特点是“后进先出”,即最先进入栈区的方法最后出栈,比如main方法
- 堆:存储new出来的数组或对象(面向对象部分详解)
- 本地方法栈:JVM在调用操作系统功能时使用,与开发无关
- 寄存器:CPU使用,与开发无关
数组类型:变量arr存储的是数组在堆内存中的地址值,而不是数组元素的值,变量arr通过内存地址引用堆内存中的数组,所以数组是引用类型
数组的常见操作
数组使用中两个常见问题
数组索引越界异常: ArrayIndexOutOfBoundsException
当访问了不存在的索引时 异常:即非正常情况,可以简单理解为程序运行过程中出现错误。
空指针异常:NullPointerException
数组引用存储的值为null而非数组的地址值时
引用类型的变量作为参数传递给方法时,传递的是地址值。
基本类型的变量作为参数传递给方法,传递的是值。