java基础回顾_02(自用)

变量与运算符

1.变量的使用

int age;
double weight;
char gender;
boolean marry;
String name;

2.变量赋值

age=18;
weight=109;
gender='女';
boolean isBeauty=true;

 3.整数类型

byte short int long

4.浮点类型:float、double

float精确到7位有效数字,精度低

double精度是float两倍。

定义 float 类型的变量,赋值时需要以" f "或" F "作为后缀。
Java 的浮点型 常量默认为 double 型 。

5.字符类型

形式 1:使用单引号(' ')括起来的 单个字符 。
例如:char c1 = 'a'; char c2 = '中'; char c3 = '9';
– 形式 2:直接使用 Unicode 值 来表示字符型常量:‘ \uXXXX ’。其中,
XXXX 代表一个十六进制整数。
例如:\u0023 表示 '#'。
– 形式 3:Java 中还允许使用 转义字符 ‘\’ 来将其后的字符转变为特殊字符
型常量。
例如:char c3 = '\n'; // '\n'表示换行符

6.布尔类型

boolean 类型数据只有两个值:true、false,无其它
– 不可以使用 0 或非 0 的整数替代 false 和 true,这点和 C 语言不同

Less is More!建议不要这样写:if ( isFlag = = true ),只有新手才如
此。关键也很容易写错成 if(isFlag = true),这样就变成赋值 isFlag 为
true 而不是判断! 老鸟的写法 是 if (isFlag)或者 if ( !isFlag)。

7.自动类型提升

int i = 'A';//char 自动升级为 int ,其实就是把字符的编码值赋值给 i 变量了
double d = 10;//int 自动升级为 double
long num = 1234567; // 右边的整数常量值如果在 int 范围呢,编译和运行都可以通过,这里涉及到数据类型转换

8.强制类型转换

将 3.14 赋值到 int 类型变量会发生什么?产生编译失败,肯定无法赋值

(1)当把存储范围大的值(常量值、变量的值、表达式计算的结果值)强制转
换为存储范围小的变量时,可能会 损失精度 或 溢出 。

int i = (int)3.14;// 损失精度
double d = 1.2;
int num = (int)d;// 损失精度
int i = 200;
byte b = (byte)i;// 溢出


(2)当某个值想要提升数据类型时,也可以使用强制类型转换。这种情况的强
制类型转换是 没有风险 的,通常省略。

int i = 1;
int j = 2;
double bigger = (double)(i/j);


(3)声明 long 类型变量时,可以出现省略后缀的情况。float 则不同。
 

long l1 = 123L;
long l2 = 123;// 如何理解呢? 此时可以看做是 int 类型的 123 自动类型提升为 long 类型
//long l3 = 123123123123; // 报错,因为 123123123123 超出了 int 的范围。
long l4 = 123123123123L;
//float f1 = 12.3; // 报错,因为 12.3 看做是 double ,不能自动转换为 float
类型
float f2 = 12.3F;
float f3 = (float)12.3;

9.String

任意八种基本数据类型的数据与String类型只能进行+运算,且结果一定也是String

String不能进行强制类型转换

System.out.println("" + 1 + 2);//12
int num = 10;
boolean b1 = true;
String s1 = "abc";
String s2 = s1 + num + b1;
System.out.println(s2);//abc10true
//String s3 = num + b1 + s1;// 编译不通过,因为 int 类型不能与 boolean 运算
String s4 = num + (b1 + s1);// 编译通过
String str = "123";
int num = (int)str;// 错误的
int num = Integer.parseInt(str);// 正确的,后面才能讲到,借助包装类的方法才能转

10.计算机二进制、八进制、十六进制十进制转化

学过好多遍了,不看了

11.运算符

赋值运算符

比较运算符

逻辑运算符

位运算符

12.条件运算符

int i=(1==2?110:120);

流程与控制语句

由于,之前学过加上java的控制语句和其他语言也类似,以敲代学吧

1.顺序结构

没啥,正常写

2.分支结构

if else

public static void main(String[] args) {
	int score=79;
	if(score==100) {
		System.out.println("奖励!");
	}else if(score >=60 && score< 100) {
		System.out.println("不错,及格了");
	}else {
		System.out.println("胖揍一顿");
	}
		
	}
switch case
public static void main(String[] args) {
	int score=79;
	switch(score/10){
		case 0:
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
			System.out.println("不及格 ");
		default:
			System.out.println("及格了");
	}
		
	}

 case具有穿透性,也就是说,如果case后面不写break,将出现穿透现象,也就是一旦 匹配成功,不再判断下一个case的值,直接向后运行,直到遇到break或者switch结束停止 。

public static void main(String[] args) {
	Scanner scan = new Scanner(System.in);
	System.out.println("请输入 2023 年的 month:");
	int month = scan.nextInt();
	System.out.println("请输入 2023 年的 day:");
	int day = scan.nextInt();

	int sumDays = 0;// 记录总天数
	// 写法 2 :推荐
	switch(month){
	case 12:
	sumDays += 30;// 这个 30 是代表 11 月份的满月天数
	case 11:
	sumDays += 31;// 这个 31 是代表 10 月份的满月天数
	case 10:
	sumDays += 30;// 这个 30 是代表 9 月份的满月天数
	case 9:
	sumDays += 31;// 这个 31 是代表 8 月份的满月天数
	case 8:
	sumDays += 31;// 这个 31 是代表 7 月份的满月天数
	case 7:
	sumDays += 30;// 这个 30 是代表 6 月份的满月天数
	case 6:
	sumDays += 31;// 这个 31 是代表 5 月份的满月天数
	case 5:
	sumDays += 30;// 这个 30 是代表 4 月份的满月天数
	case 4:
	sumDays += 31;// 这个 31 是代表 3 月份的满月天数
	case 3:
	sumDays += 28;// 这个 28 是代表 2 月份的满月天数
	case 2:
	sumDays += 31;// 这个 31 是代表 1 月份的满月天数
	case 1:
	sumDays += day;// 这个 day 是代表当月的第几天
	}
	System.out.println(month + "月" + day + "日是 2023 年的第" + sumDays + "天");
	// 关闭资源
	scan.close();
	}

Scanner类
import java.until.Scanner

循环结构

for
public static void main(String[] args) {
	int sum=0;
	for(int i=1;i<100;i++) {
		if(i%2==1) {
		sum+=i;
		}
	}
	System.out.println(sum);
	}
while

就那样

do-while

和while相比 ,它至少执行一次,在最后面判断

break continue

区别就是,break跳出循环结构,continue跳出本次循环,执行下次循环 。

Scanner

键盘输入代码的四个步骤:
1. 导包: import java.util.Scanner;
2. 创建 Scanner 类型的对象: Scanner scan = new
Scanner(System.in);
3. 调用 Scanner 类的相关方法( next() / nextXxx() ),来获取指定类型
的变量
4. 释放资源: scan.close();

import java.util.Scanner

Scanner scanner=new Scanner(System.in);
int age=scanner.nextInt();

获取一个随机数

如何产生一个指定范围的随机整数?
1、Math 类的 random()的调用,会返回一个[0,1)范围的一个 double 型值
2、Math.random() * 100 ---> [0,100) (int)(Math.random() * 100) ---> [0,99]
(int)(Math.random() * 100) + 5 ----> [5,104]
3、如何获取 [a,b] 范围内的随机整数呢? (int)(Math.random() * (b - a +1))+a

(b-a+1)是区间长度 最后加a是开头是a

double value=Math.random();
	System.out.println(value);
	int number =(int)(Math.random()*10)+7;
	System.out.println(number);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值