栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

尚硅谷JAVA笔记第二章--关键字保留字 标识符 变量 运算符 流程控制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

尚硅谷JAVA笔记第二章--关键字保留字 标识符 变量 运算符 流程控制

自己之前学过python,所以这份笔记总体上记录自己觉得的新东西

一、关键字和保留字 1. 关键字

class if public 等
特点:所有字母都小写

2. 保留字

goto、const

二、标识符

定义:各种名字
规则(必须遵守):

  • 字母大小写、数字、_ 、$ 组成
  • 数字不可开头
  • 区分大小写,长度不限
  • 不可关键字保留字(可包含)
  • 不能含空格

规范(建议遵守:见名知意):

  • 包名:xxxyyyzzz
  • 类名、接口名:XxxYyyZzz
  • 变量名、方法名: xxxYyyZzz
  • 常量名:XXX_YYY_ZZZ
三、变量
//example
class VariableTest {
	public static void main(String[] args){
		int myAge = 12;    //变量的定义(声明+赋值)
		System.out.println(myAge);
	}
}
1. 基本数据类型

基本数据类型

  • 数值型: 整数类型(byte1,short2,int4,long8); 浮点类型(float4,double8) --“数字为字节数”
  • 字符型(char2):定义通常用英文单引号,只能且必须写一个字符 | ‘n’:换行符 ; ‘t’:制表符;’u0043’: 对应C
  • 布尔型(boolean)
  1. 变量或常量: 整型默认int, 声明long后加l或者L
  2. 浮点型默认double, 声明float后加f或者F
  3. 举例:terminal默认GBK解析,存的时候就要用ANSI存,防止乱码
  4. 想输出123"456"789n需要"123"456"789n"

引用数据类型

  • 类(class): 字符串在这里
  • 接口(interface)
  • 数组([])
2. 基本数据类型变量间转换

自动类型提升
byte char short -> int -> long -> float -> double
前三种怎么运算结果都是int
强制类型转换
自动类型提升的逆运算

double d1= 1.9
int i1= (int)d1  // i1 --1 截断,损失精度
long l = 12232
//未加L并不会报错,其实是将其看作int
long l = 2313123213213213213213
//超出int表示范围,报错

float f1 = 1.2
//报错,因为不加F默认为double, double转float必然报错(大转小)
// float f1 = (float)1.2   可解


byte b = 12
byte b1 = b +1  //1 作为整型常量默认int  另外 1.1 作为浮点型常量默认double
3. 基本数据类型与String间转换 string

不是基本数据类型,是引用数据类型
String 可以和八种基本数据类型运算,且只能说hi连接运算,且结果类型仍为String

String str1 = "123"
int num1 = str1 // 报错
int num2 = (int)str1 // 报错
// 因为String不参与上述类型转换等运算
// 正确做法
int num 3 = Interger.parseInt(str1)
4. 进制间转换

对于整数

  • 二进制 binary: 0b 0B
  • 八进制 octal: 0
  • 十进制 decimal
  • 十六进制 hex: 0x 0X


int 128 强转 byte , 得 -128

4 运算符 算术运算符
// /
int num1 = 12
int num2 = 5
double result = num1 / (num2 + 0.0) //2.4

// % 取模运算
// 结果的符号与被模数符号相同
int m1 = -12
int m2 = 5
int m3 = m1 % m2 // -2   与-12符号同,就算m2是-5也是如此

// ++
++i //先+1再i(赋值)
i++ //先i(赋值)再+1
// 另外注意自增1不会改变变量本身数据类型,效率更高
short i = 2
i = i + 1 //报错,因为1为int型
赋值运算符
//+= 不会改变变量本身的数据类型
short i = 1
i = i + 2 //报错,自动转成int
i += 2  //正确,不改变数据类型
//练习
int n = 10
n += (n++) + (++n)  //32
// 即 n = n + (n++) + (++n) = 10 + 10 + 12
到(n++)之后n已经成为11,所以后面(++n)时加的是12
比较运算符
// == != <= 等
// instanceof  检查是否为类的对象

//结果都为boolean型
逻辑运算符
& 逻辑与
&& 短路与
| 逻辑或
|| 短路或
!逻辑非
^ 逻辑异或

//& 与 && 的区别
// 当符号左边是false时,&会继续执行右边的运算,&&则不会(因为一个false就知道结果了)
//| 与 || 同理
位运算符

& 左右如果是boolean,则是逻辑与
左右如果是整数,则是与运算

//高效计算2*8
2 << 3 或者 8 << 1


// 练习 交换变量的值
int num1 = 10
int num2 = 20

num1 = num1 + num2
num2 = num1 - num2
num1 = num1 - num2
// 节省内存空间,但可能会溢出,且非数值型不支持加减

//方法2
num1 =  num1 ^ num2
num2 =  num1 ^ num2
num1 =  num1 ^ num2
// 节省内存空间,但非数值型不支持加减

方法2 背后原理

三元运算符

(条件表达式)? 表达式1 : 表达式2
如果条件表达式为true则执行表达式1,反之表达式2
要求表达式1和表达式2类型统一,方可用统一的变量接收

m = 10
n = 20
String maxStr = (m > n) ? "m大" : ((m == n) ? "m等于n " : "n大") //可嵌套

凡是可以使用三元运算符的地方都可以改写成if-else, 反之不行(if-else结构更复杂)
但相比来说三元运算符简洁且运行效率高(能用则用)

五、程序流程控制 顺序结构 分支结构 if else
// 导包,实例化,调用方法 SCAN
import java.util.Scanner;
class Test{
	public static void main(String [] args){
		Scanner scan = new Scanner(System.in);
		int num = scan.nextInt();
		System.out.println(num);
		
		//没有nextChar,需要用如下方法获取一个字符(在一个字符串中获取索引为0的字符)
		String gender = scan.next();
		char genderChar = gender.charAt(0);
		System.out.prinln(genderChar);
	}
}
// 要求: 产生随机数: 10-99
// 公式:[a,b] :(int)(Math.random()*(b-a+1)+a)
class Test{
	public static void main(String [] args){
		//double value = Math.random(); // [0.0,1.0)
		// 需要处理成10-99
		//首先Math.random() * 90 --> [0.0,90.0), 然后再加10,变[10.0,100.0),然后int强转即可
		int value = (int)(Math.random()*90+10);
		System.out.println(value);
	}
}
switch-case
// 表达式只能是一下六种类型
// byte, short, char, int, 枚举类型, String类型
// 如果语句1。。。语句n相同,则考虑合并
// break 是可选的,视情况而定
// 如果可以与if-else相互替代且写起来不负责,使用switch-case(效率稍高)
switch(表达式){
case 常量1:
	语句1;
	break;
}
...
case 常量n:
	语句n;
	break;
}
default:
	语句;
	break;
循环结构 for 循环
① 初始化条件
② 循环条件(boolean)
③ 循环体
④ 迭代条件
for(①;②;④){
	③
}
① -> ② -> ③ -> ④ -> ② -> ③ -> ④ -...- ②

while循环
// for 和 while 初始化条件中的变量的作用范围不同
①
while(②){
	③
	④
}
① -> ② -> ③ -> ④ -> ② -> ③ -> ④ -...- ②
do while 循环
①
do{
	③;
	④;
}while(②)
① -> ③ -> ④ -> ② -> ③ -> ④ -> ② -...- ②

// 相比for 和 while 至少也执行一次③④,如果执行多次则没有区别
for(;;){}与while(true){}效果相同

//结束循环的方式
//一、循环条件返回false
//二、循环体中执行break
嵌套循环
//外层控制行数,内层控制列数
break,continued的使用

都使用在循环中,break结束当前循环(默认当前最近的循环 ),continue结束当次循环(默认当前最近的循环 )
另外两者后面都不能有执行语句

那么如何结束指定循环?

label:for (int i =1; i <= 4; i++){
	for (int j = 1; j <= 10; j++){
		if (j % 4 == 0){
			break label; //结束指定标识的一层,continue同理
		}
	}
}

over
接下来是 项目一:家庭记账软件

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/692791.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号