Java变量,数据类型转换,运算符,逻辑控制语句

一.变量

1.变量的作用域:

变量能生效的范围,一般是变量定义所在的代码块(大括号内)
在这里插入图片描述

2.变量的命名规则

  1. 一个变量名只能包含字母,数字,下划线
  2. 数字不能开头
  3. 英文大小写敏感,Num和num是两个不同的变量

注:
a.不推荐用中文/美元符号命名
b.推荐小驼峰命名法(当一个变量名由多个单词构成的时候,除了第一个单词之外,其他单词首字母大写)

二.常量:常量指的是运行时类型不能发生改变,只能初始化一次,eg:被 final 修饰的变量是常量

三:数据类型转化

1. int和 long/ double相互赋值

在这里插入图片描述

结论:
不同数字类型的变量之间赋值,表示范围更小的类型能隐式转换成范围较大的类型,反之不行

2. int和boolean相互赋值

在这里插入图片描述

结论:
int和boolean是毫不相干的两种类型,不能相互赋值

3. int字面值常量给byte赋值

在这里插入图片描述

Byte表示的数据范围是-128~127,267超过范围

4.强制类型转换

在这里插入图片描述

类型转化小结:
1.不同类型的变量之间赋值,表示范围更小的类型能隐式转换成范围较大的类型
2.若要将范围大的赋值给范围小的,需要强制类型转换,可能会丢失精度
3.将一个字面值常量进行赋值的时候,Java会自动针对数字范围进行检查

5.数值提升

a. int和 long 混合运算

在这里插入图片描述

结论:
当 int 和 long 混合运算的时候, int 会提升成 long, 得到的结果仍然是 long 类型, 需要使用 long类型的变量来接收结果. 如果非要用 int 来接收结果, 就需要使用强制类型转换.

b.byte和byte的运算

结论:
byte 和byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和 b都提升成 int, 再进行计算, 得到的结果也是int, 这时赋给 c, 就会出现上述错误.由于计算机的 CPU 通常是按照 4个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short 这种低于4 个字节的类型, 会先提升成 int,再参与计算.

在这里插入图片描述

类型提升小结:

  1. 不同类型的数据混合运算, 范围小的会提升成范围大的.
  2. 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算.

6.int 和 string 之间的相互转换

在这里插入图片描述

总结在这里插入图片描述

四. 运算符

1.除法: /

在这里插入图片描述
注: 0 不能作为除数

异常:

  • 编译时期异常(受查异常):一定要由程序员进行异常的处理程序才能运行
  • 运行时期异常(非受查异常):是程序在运行的过程当中所发生的异常
 public static void main(String[] args) {
        System.out.println(1/0);
    }

在这里插入图片描述

2.求余:%

在这里插入图片描述

3.复合运算符 += -= *= /= %= ++ –

int a = 10;
a += 1; // 等价于 a = a + 1
System.out.println(a);

可以自动进行类型转化
在这里插入图片描述
特例:
在这里插入图片描述

4.关系运算符

== != < > <= >=
在这里插入图片描述
注:Java当中所有的关系比较,其结果就是true或者是false

5.逻辑运算符

1.逻辑与 &&

注:表达式1表达式2必须都是布尔表达式
规则: 两个操作数都为 true, 结果为 true, 否则结果为 false.

int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b && b < c);

2.逻辑或 ||

规则: 两个操作数都为 false, 结果为 false, 否则结果为 true
注:表达式1表达式2必须都是布尔表达式

int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b || b < c);

3.逻辑非 !

规则: 操作数为 true, 结果为 false; 操作数为 false, 结果为 true(这是个单目运算符, 只有一个操作数).

int a = 10;
int b = 20;
System.out.println(!a < b);

6.短路求值

  • 对于 && , 如果左侧表达式值为 false, 则表达式的整体的值一定是 false, 无需计算右侧表达式.
  • 对于 ||, 如果左侧表达式值为 true, 则表达式的整体的值一定是 true, 无需计算右侧表达式.

7.位运算符:& | ~ ^

1.按位与 &: 如果两个二进制位都是 1, 则结果为 1, 否则结果为 0.

2.按位或 |: 如果两个二进制位都是 0, 则结果为 0, 否则结果为 1.

3.按位取反 ~: 如果该位为 0 则转为 1, 如果该位为 1 则转为 0

4.按位异或 ^: 如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1.

注意:

  1. 0x 前缀的数字为 十六进制 数字. 十六进制可以看成是二进制的简化表示方式. 一个十六进制数字对应 4 个二进 制位.
  2. 0xf 表示 10 进制的 15, 也就是二进制的 1111
  3. printf 能够格式化输出内容, %x 表示按照十六进制输出.
  4. \n 表示换行符

8.移位运算:<< >> >>>

左移 <<: 最左侧位不要了, 最右侧补 0
右移 >>: 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)
无符号右移 >>>: 最右侧位不要了, 最左侧补 0.

注意:

  1. 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.
  2. 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.
  3. 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.
  4. 移动负数位或者移位位数过大都没有意义.

9.条件运算符

表达式1 ? 表达式2 : 表达式3
当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值; 当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值.也是 Java 中唯一的一个 三目运算符

注释

  • 单行注释:// 注释内容(用的最多)
  • 多行注释:/* 注释内容*/(不推荐)
  • 文档注释: /** 文档注释 */(常见于方法和类之上描述方法和类的作用),可用来自动生成文档

五.逻辑控制

分支结构

1.if语句

单分支
if(布尔表达式){
  //条件满足时执行代码
}
双分支
if(布尔表达式){
  //条件满足时执行代码
}else{
  //条件不满足时执行代码
}
多分支
if(布尔表达式){
  //条件满足时执行代码
}else if(布尔表达式){
  //条件满足时执行代码
}else{
  //条件都不满足时执行代码
}

scanner用法:

public static void main(String[] args) {
        //循环输入

        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt()){
            // scanner.nextLine();一般有nextLine()的时候把它放在第一行
            int a = scanner.nextInt();

            System.out.println(a);
        }
        scanner.close();//ctr+d 关闭
    }
}

三种输出方式:

System.out.println(a);//输出且换行
System.out.print(a);//输出不换行
System.out.printf("%d/n",a);//格式化输出

题:不能做switch参数的类型有哪些?
答:long,fioat double boolean

2.switch语句

switch(整数|枚举|字符|字符串){
case 内容1 : {
内容满足时执行语句;
[break;]
}
case 内容2 : {
内容满足时执行语句;
[break;]
}
...
default:{
内容都不满足时执行语句;
[break;]
}
}

循环结构

1. while 循环

while(循环条件){
循环语句;
}
循环条件为 true, 则执行循环语句; 否则结束循环.
break:结束所有循环 跳出循环
continue:结束本趟循环

2.for 循环

(1)for(表达式1;表达式2;表达式3){
循环体;
}
表达式1: 用于初始化循环变量.
表达式2: 循环条件,2没写默认true
表达式3: 更新循环变量.
相比于 while 循环, for 循环将这三个部分合并在一起, 写代码时不容易遗漏
执行顺序:1,2,循环体,3,2,循环体,3,2,循环体,3 .。。
(2)增强for循环。foreach

int[] arr = {1,2,3,4,5};
for(int x : array){
System.out.println(x);
}

3.do while 循环

基本语法
do{
循环语句;
}while(循环条件);
先执行循环语句, 再判定循环条件
注:循环至少执行一次,不建议使用

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值