目录
[1.1 注释](#1.1 注释)
[1.2 关键字](#1.2 关键字)
[1.3 常量](#1.3 常量)
[1.4 数据类型](#1.4 数据类型)
[1.5 变量](#1.5 变量)
[1.6 标识符](#1.6 标识符)
[1.7 类型转换](#1.7 类型转换)
[2.1 算数运算符](#2.1 算数运算符)
[2.2 数据输入(Scanner)](#2.2 数据输入(Scanner))
[2.3 分支判断语句](#2.3 分支判断语句)
[1. if相关语句](#1. if相关语句)
[1. for循环](#1. for循环)
[2. while循环语句](#2. while循环语句)
[3. do...while循环](#3. do...while循环)
1.基础语法
1.1 注释
// 单行注释
/*
多行注释
*/
1.2 关键字
解释: 被java语言赋予了特定的含义的单词
特点: 关键字全部小写
1.3 常量
解释: 在程序运行中,其值不可以发生改变的量
常量的分类
|------|------------|-------------|
| 常量类型 | 说明 | 举例 |
| 字符串 | 用双引号括起来的内容 | "HelloWord" |
| 整数 | 不带小数的数字 | 666 |
| 小数 | 带小数的数字 | 13.14 |
| 字符 | 用单引号括起来的内容 | 'A' '你' |
| 布尔 | 布尔值,表示真假 | true false |
| 空常量 | 一个特殊的值,空值 | null |
1.4 数据类型
前言计算机相关知识普及: 计算机存储设备的最小信息单元叫位(bit),也称为比特位,通常用小写字母b表示,计算机最小存储单元叫字节(byte),用B表示.由8个位组成
1B(字节) = 8bit 1KB = 1024B 1M = 1024KB 1GB = 1024MB 1TB = 1024GB
基本数据类型的内存占用和取值范围
|------|---------|------|-----------------|
| 数据类型 | 关键字 | 内存占用 | 取值范围 |
| 整数 | byte | 1 | -128~127 |
| 整数 | short | 2 | -32768~32767 |
| 整数 | int | 4 | -2^31~2^31-1 |
| 整数 | long | 8 | -2^63~2^63-1 |
| 浮点 | float | 4 | ~ |
| 浮点 | double | 8 | ~ |
| 字符 | char | 2 | 0~65535 |
| 布尔 | boolean | 1 | true,false |
1.5 变量
解释:程序运行过程中,其值可以发生改变(存储在内存上)
格式: 数据类型 变量名 = 变量值 (int a = 1)
修改变量的值 变量名 = 变量值 (a = 10)
1.6 标识符
规则:由数字,字母,下划线和$组,不能以数字开头,不能是关键字,区分大小写
常见的命名规则:(小驼峰命名:方法和变量)一个字母时首字母小写,多个字母时,第一个首字母小写,其它首字母大写 (大驼峰命名:类)无论单个还是多个首字母都大写
1.7 类型转换
1.自动类型转换,范围小的赋值给大的 2. 强制类型转换(精度容易丢失),范围大的赋值给范围小的
格式: 目标数据类型 变量名 = (目标数据类型)值或变量 (int a = (int)13.14)
2.算数运算符和分支语句
2.1算数运算符
1.常规运算符
-
- * / %(取余)
2.赋值运算符
int i = 0; i = i +1 可以写成 i += 1 一般情况下二者等价
short j = 0; j = j +1 会报错因为1为int类型,j为short类型
但是 j=j+1不报错等价于 j = (short)(j+1) 类型底层隐含强行转换
3.自增自减
1.单独使用,++a和a++的结果一样
2.产于操作时,a++,先取变量的值,后拿变量进行操作
++a,先将变量进行操作,后取变量的值
实例: int i = 5; int j =++i 和 int i = 5; int j =i++,分别打印输出j,i的值如下
|-----|---|---|
| 操作 | i | j |
| ++i | 6 | 6 |
| i++ | 6 | 5 |
4.关系运算符
== != > >= < <=
5.逻辑运算符
|----|------|------------------|
| 符号 | 作用 | 说明 |
| & | 逻辑与 | 全为true结果才为true |
| | | 逻辑或 | 全为false结果才为false |
| ^ | 逻辑异或 | 二者结果不同才为true |
| ! | 逻辑非 | 结果相反 |
|------|-----|--------------------------------------|
| 符号 | 作用 | 说明 |
| && | 短路与 | (作用与&一样,但会短路)a&&b a为false,将不会在处理b |
| || | 短路或 | (作用与&一样,但会短路)a||b a为true,将不会在处理b |
6.三元运算符
格式: 关系表达式?表达式1:表达式2
实例; a>b?a:b 其中值为true输出a 值为false输出b
2.2 数据输入(Scanner)
作用:用于键盘输入内容进行操作
1.导包
import java.util.Scanner (出现类定义上面)
2.创建对象
Scanner sc = new Scanner(System.in); (sc为变量名)
3.接受数据
int i = sc.nextInt(); (i为变量名)
2.3 分支判断语句
1. if相关语句
- if (关系表达式){
语句体1;
}
- if(关系表达式){
语句体1;
}else{
语句体3;
}
- if(关系表达式){
语句体1;
}else if(关系表达式){
语句体2;
}
...
else{
语句体3;
}
如果if表达式的值为true,则执行语句体1,满足else if的条件,执行语句2,否则都执行语句3
2.switch语句
相关格式:
switch(表达式){ // 表达式:取值可以是int...string等或者枚举
case 值1: // case: 值1要与表达式里的值相匹配(==)
语句体1; // break: 表示中断,从此处跳出的意思
break; // default的含义与if语句中else相似
...
default:
语句体n;
}
实例: 对枚举等操作(后续内容会在后续补充)
java
// 枚举定义格式
enum Color{
red,blue,yellow;
}
public class Test{
public static void main(String[] args){
Color c = Color.blue; // 获取枚举中某个数据
switch(c){
case red:
System.out.println("红色");
break;
case blue:
System.out.println("蓝色");
break;
}
}
}
3.循环相关内容
1. for循环
格式:
for (初始化语句;条件判断语句;条件控制语句){
循环体内容;
}
执行流程:
1.执行初始化语句 2.执行判断语句(true接着执行否则结束)
3.执行循环体内容 4.执行条件控制语句
5.回到2继续执行
实例:
for (int i=0;i<=3;i++){
System.out.println(i); // 0,1,2,3
}
2. while循环语句
基本格式:
while(条件判断语句){
循环体内容;
条件控制语句;
}
执行流程:
1.先执行条件判断语句,为true继续执行,否则结束
2.执行循环体内容和条件控制语句
3.回到1继续执行
实例:
int i = 7;
while(i>5){
System.out.println("你好"); //会打印2次你好
i--;
}
3. do...while循环
基本格式:
do{
循环体内容;
条件控制语句;
}while(条件判断);
执行流程:与while类似.
二者唯一区别是,do..while无论条件是否成立先执行一遍循环体nerv
4.跳出控制语句
|----------|-------------------------|
| 符号 | 作用 |
| continue | 基于条件控制,跳出某次循环执行,继续进行下一次 |
| break | 基于条件控制,终止循环内容执行,结束整个循环 |
5.生成随机数(Random)
作用:用于产生一个随机数
1.导包
import java.util.Random;
2.创建对象
Random x = new Random(); //x是变量名
3.获取随机数
int number = r.nextInt(10); //10是获取范围[0,10)
4.数组
1.数组的定义
格式1: 数据类型[] 变量名
格式2: 数据类型 变量名[]
2.数组初始化
动态初始化: 只指定数组的长度
格式: 数据类型[] 变量名 = new 数组类型[数组长度]
实例: int [] a = new int [2];
左边 int:数组数据类型 []:表示一个数组 a:数组名词
右边 new:为数组申请的内存空间 int和[]如上 2:代表数组中元素个数
静态初始化:指定数组中的元素
格式: 数据类型[]变量名 = new 数据类型[]{数据1,数据2...}
简化格式: 数据类型[]变量名 = {数据1,数据2...}
上述实例内存示意图(实例结果是001,1)
数组存储会给元素一个默认值,int为0,double为0.0等
栈内存: 存储局部变量
堆内存: 存储new出来的内容(实体,对象)
3.数组内容输出
格式: 数组名[索引]
注意: 索引从0开始,是连续的
4.数组常见问题和操作
|-------|--------------|--------------------------------|
| 常见问题 | 原因 | 报错 |
| 索引越界 | 访问了数组不存在的索引 | ArrayIndexOutOfBondsException. |
| 空指针异常 | 访问数据不指向堆内存数据 | NullPinterException ||-----------|---------|
| 操作 | 作用 |
| 数组.length | 获取数组的长度 |