目录
1.基础语法
1.1 注释
1.2 关键字
1.3 常量
1.4 数据类型
1.5 变量
1.6 标识符
1.7 类型转换
2.算数运算符和分支语句
2.1 算数运算符
1.常规运算符
2.赋值运算符
3.自增自减
4.关系运算符
5.逻辑运算符
6.三元运算符
2.2 数据输入(Scanner)
2.3 分支判断语句
1. if相关语句
2.switch语句
3.循环相关内容
1. for循环
2. while循环语句
3. do...while循环
4.跳出控制语句
5.生成随机数(Random)
4.数组
1.数组的定义
2.数组初始化
3.数组内容输出
4.数组常见问题和操作
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相关语句
1. if (关系表达式){
语句体1;
}
2. if(关系表达式){
语句体1;
}else{
语句体3;
}
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;
}
实例: 对枚举等操作(后续内容会在后续补充)
// 枚举定义格式
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 获取数组的长度