基础语法
数据类型
数据名称 | 类型 | 字节(位) |
---|---|---|
byte | 整数 | 1 (8) |
short | 整型 | 2 (16) |
int | 整型 | 4(32) |
long | 整型 | 8(64) |
folat | 浮点单精度 | 4(32) |
double | 浮点双精度 | 8(64) |
char | 字符型 | 2(16) |
boolean | 布尔型 | 1 |
附件:string不是基本数据类型,spring的长度受内存大小影响
变量
定义格式: 变量类型 变量名 = 值;
变量分类
成员变量 局部变量 静态变量
. | 成员变量 | 局部变量 | 静态变量 |
---|---|---|---|
定义位值 | 在类中,方法外 | 方法中,或者方法的形式参数 | 在方法中,方法外 |
初始化值 | 有默认的初始化值 | 无,先定义,赋值后才能使用 | 有默认的初始化值 |
调用方式 | 对象调用 | ---- | 对象调用,类名调用 |
存储位置 | 堆中 | 栈中 | 方法区 |
生命周期 | 与对象共存亡 | 与方法共存亡 | 与类共存亡 |
别名 | 实例变量 | ---- | 类变量 |
小结:尽管三者的本质都是变量,可是使用时却有相当大的区别,稍不留神就可能陷入陷阱.且先记住:在一个类中,如果变量能够用来描述一个类的属性,那就定义为成员变量,否则,它就应该定义为局部变量,而如果一个一个变量在全局都能够使用(某个内容是被所有对象所共享),那么我们就可以把真个变量用static来修饰,即为静态变量
运算符
算术运算符
操作符 | 描述 |
---|---|
+ | 加法 - 相加运算符两侧的值 |
- | 减法 - 左操作数减去右操作数 |
* | 乘法 - 相乘操作符两侧的值 |
/ | 除法 - 左操作数除以右操作数 |
% | 取余 - 左操作数除以右操作数的余数 |
++ | 自增: 操作数的值增加1 |
– | 自减: 操作数的值减少1 |
关系运算符
操作符 | 描述 |
---|---|
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 |
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 |
位运算符
操作符 | 描述 |
---|---|
& | 如果相对应位都是1,则结果为1,否则为0 |
| | 如果相对应位都是0,则结果为0,否则为1 |
^ | 如果相对应位值相同,则结果为0,否则为1 |
〜 | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 |
逻辑运算符(重点)
操作符 | 描述 |
---|---|
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 |
| | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 |
赋值运算符
操作符 | 描述 |
---|---|
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 |
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 |
(%)= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 |
<< = | 左移位赋值运算符 |
>> = | 右移位赋值运算符 |
&= | 按位与赋值运算符 |
^ = | 按位异或赋值操作符 |
|= | 按位或赋值操作符 |
————————————————
三元运算符
格式: 关系表达式 ? 表达式1 : 表达式2;
案例:三个和尚比身高
流程控制语句
顺序结构
程序中最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行
选择结构
三种格式的基本用法
//第一种
if (关系表达式) {
语句体;
}
//第二种
if (关系表达式) {
语句体1;
} else {
语句体2;
}
//第三种
if (关系表达式1) {
语句体1;
} else if (关系表达式2) {
语句体2;
}
…
else {
语句体n+1;
}
注意事项
当关系表达式为false是,大括号中的语句不会执行
if第二种格式和三元运算符的区别?
三元运算符是对某个数据的值进行判断, if语句第二种格式是对两个结果进行判断,输出一个结果或者一条执行语句 ,
三元运算符能够使用的if语句一定能够使用,但是if语句能够使用的三元运算符不一定能够使用
switch
基本用法
switch (表达式) {
case 1:
语句体1;
break;
case 2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
case穿透
如果switch中得case,没有对应break的话,则会出现case穿透的现象。
循环结构
for (初始化语句;条件判断语句;条件控制语句) {
循环体语句;
}
while (条件判断语句) {
循环体语句;
条件控制语句;
}
//不常用,了解就行
do {
循环体语句;
条件控制语句;
}while(条件判断语句);
演示代码:public class DoWhileDemo {
public static void main(String[] args) {
//需求:在控制台输出5次"HelloWorld"
//for循环实现
for(int i=1; i<=5; i++) {
System.out.println("HelloWorld");
}
System.out.println("--------");
//do...while循环实现
int j = 1;
do {
System.out.println("HelloWorld");
j++;
}while(j<=5);
}
}
三种循环的区别
for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行),
do…while循环是先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)
for循环和while的区别?
1.条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了
2.条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用
死循环:
1. for(;;){}
2. while(true){}
3. do {} while(true);
控制跳转语句
名称 | 作用 |
---|---|
break | 跳出循环,结束循环 |
continue | 跳出本次循环,继续下次循环 |
随机数
Random的基本使用
1.导包 import java.util.Random;
2.创建对象 Random r = new Random();
3.产生随机数 int num = r.nextInt(10);
解释: 10代表的是一个范围,如果括号写10,产生的随机数就是0-9,括号写20,参数的随机数则是0-19
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
//创建对象
Random r = new Random();
//用循环获取10个随机数
for(int i=0; i<10; i++) {
//获取随机数
int number = r.nextInt(10);
System.out.println("number:" + number);
}
//需求:获取一个1-100之间的随机数
int x = r.nextInt(100) + 1;
System.out.println(x);
}
}
案例:猜数字
程序自动生成一个1-100之间的数字,使用程序实现猜出这个数字是多少?
A. 如果猜的数字比真实数字大,提示你猜的数据大了
B. 如果猜的数字比真实数字小,提示你猜的数据小了
C. 如果猜的数字与真实数字相等,提示恭喜你猜中了
import java.util.Random;
import java.util.Scanner;
public class RandomTest {
public static void main(String[] args) {
//要完成猜数字的游戏,首先需要有一个要猜的数字,使用随机数生成该数字,范围1到100
Random r = new Random();
int number = r.nextInt(100) + 1;
while(true) {
//使用程序实现猜数字,每次均要输入猜测的数字值,需要使用键盘录入实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要猜的数字:");
int guessNumber = sc.nextInt();
//比较输入的数字和系统产生的数据,需要使用分支语句。
//这里使用if..else..if..格式,根据不同情况进行猜测结果显示
if(guessNumber > number) {
System.out.println("你猜的数字" + guessNumber + "大了");
} else if(guessNumber < number) {
System.out.println("你猜的数字" + guessNumber + "小了");
} else {
System.out.println("恭喜你猜中了");
break;
}
}
}
}
键盘录入
1.导包 导入java.util包
2.创建scanner对象 Scanner sc = new Scanner(System.in);// 创建Scanner对象,sc表示变量名,其他均不可变
3.接受数据 int i = sc.nextInt(); // 表示将键盘录入的值作为int数返回。
import java.util.Scanner;
class Into {
public static void main(String[] args) {
//创建键盘录入数据
Scanner sc = new Scanner(System.in);
System.out.println("x:");
int x = sc.nextInt();//输入为整数
System.out.println("你输入的数据是:"+x);
}
}