Java中的变量、数据类型、运算符、键盘录入、流程控制语句

1.变量

定义:在程序执行的过程中,在某个范围内其值可以发生改变的量
​
变量定义方式 :数据类型 变量名 = 初始化值;

2. 数据类型

2.1 基本数据类型

整数类型:           所占字节数                可表示的范围
        byte               1                    -2^7~2^7-1
        short              2                    -2^15~2^15-1
        int                4                    -2^31~2^31-1
        long               8                    -2^63~2^63-1
浮点类型:
        float              4
        double             8
字符类型:
        char                在不同的编码下,char字符类型所占的字节数是不一样的,
                            java默认是以Unicode编码(一个字符所占2个字节)进行运行的
布尔类型:
        boolean            1

注意事项:

1、在java语言中整数默认是int类型,小数默认是double类型
2、byte,short,char类型进行运算时,会先转为int类型进行运算。
3、要想定义一个long类型的数据,在值的末尾处添加一个l或者L,表示这是一个long类型的数据,推荐使用L
4、要想定义一个float类型的数据,在值的末尾处添加一个f或者F,表示这是一个float类型的数据,推荐使用F

2.2 引用数据类型

 

注:强制类型转换是一个截取的过程,有可能会把有用的数据进行截掉,造成精度损失

2.3 变量使用特点

作用域
变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。
    
初始化值
没有初始化值不能直接使用
    
定义变量的两种格式:
1、数据类型 变量名 = 初始化值;  (推荐使用)
2、数据类型 变量名;
  变量名 = 初始化值;
​
在一行上建议只定义一个变量
可以定义多个,但是不建议

2.4 变量和常量参与运算的差异性

1、变量参与数据运算会先按照默认的转换方式提升数据类型,然后在做运算 
2、常量参与运算的时候,先做运算,做完运算后再看一看结果在不在目标的范围内,如果在,就能够被接收。

2.5 ASCII码表

记住三个特殊的ASCII码

'a': 97
'A': 65
'0': 48

2.6 字符(串)与数值做运算

1.当字符串做加法的时候,这里+号,不是数值运算意义上的加法,而是字符串拼接的意思
2.加号两边,只要有一边是字符串类型,运算的过程就单纯的是字符串拼接,不做数值的转换和运算,得到的结果是一个新的字符串
3.可以使用小括号来改变运算的顺序

示例:

public class Variabletest{
    public static void main(String[] args){
        System.out.println("hello"+118); //直接显示字符串
        System.out.println('a'+1+"哇哦"); //先计算'a'+1=98,然后输出'98哇哦'
        System.out.println("bye"+12+'s'); //直接输出bye12s
        System.out.println("5+5="+(5+5)); //先进行括号中的运算
    }
}

执行结果:

 

3.运算符

 

3.1 算数运算符

public class Operatortest1 {
    public static void main(String[] args) {
        int a=2;
        int b=3;
        float c=6.0f;
        System.out.println("a:"+a+"\tb:"+b+"\tc:"+c);
        System.out.println("a+b="+(a+b)); //加
        System.out.println("a-b="+(a-b)); //减
        System.out.println("a*b="+(a*b)); //乘
        System.out.println("a/b="+(a/b)); //整除
        System.out.println("c/b="+(c/b)); //除
        System.out.println("a%b="+(a%b)); //取余
    }

运行结果:

 

++,-- 自加,自减

++ 自加1:
对变量单独使用的时候,无论是放在变量的后面还是前面,都不影响最终的结果,
不是单独使用的时候,++放在了后面表示先取值再自加1,++放在前面是先自加1,再取值

-- 自减1

3.2 赋值运算符

注意:

s+=1 等价于具备强制类型转换的式子 s=(s的数据类型)(s+1)

3.3 比较运算符

3.4 逻辑运算符

 

public class Logictest {
    public static void main(String[] args) {
        boolean a1 = true;
        boolean b1 = false;
        System.out.println(a1 & b1); //有一个为false即为false
        System.out.println(a1 | b1); //有一个为true即为true
        System.out.println(a1 ^ b1); //只有俩个不同才为true
        System.out.println(!a1); //true变为false,false变为true
 
    }
}

运行结果 :

3.5 位运算符

 

<< 左移: 参与运算的数值对应的二进制补码向左移动若干位,左边多出来的位数丢掉,右边空出的位置用0补齐
>> 右移: 参与运算的数值对应的二进制补码向右移动若干位,右边多出来的位数丢掉,左边空出来的位置,原本最高位是1就用1补齐,原本最高位是0就用0补齐
>>> 无符号右移: 右移的步骤和正常右移是一样的,但是左边空出来的位置,无论最高位是1还是0,都用0补齐

 

 

public class Weitest {
    public static void main(String[] args) {
        System.out.println(24 << 2); // 96  24*2^2=96
        System.out.println(3 << 3); // 3*2^3=24
 
        System.out.println(24 >> 2); //6  24/4=6  24/2^2=6
        System.out.println(100 >> 2); // 100/2^2=25
 
        System.out.println(-24 >>> 2);
    }
}

运行结果:

 

 

3.6 三目运算符

 需要注意的是:

在使用三目运算符时尽量保证两个返回值的类型相同,否则会触发强制类型转换。

1)如果返回值1和返回值2都是同种类型,那么三目运算符最终的返回类型就是这种类型

2)如果返回值1和返回值2不是同种类型,那么三目最终的返回类型是这两种类型的相同最小父类(最接近的父类,如果没有则返回Object,例如Integer和String最终返回的将是Object)。

3)对于基本数据类型,有点特殊。如果一个返回值类型为T(T为byte,char或short),另一个为int的常数,那么如果这个常数值在T的取值范围内,则三目最终的返回类型为T,如果常数值不在T的取值范围内,则返回发生自动类型转换。

简单来说:三目运算符返回值的类型与最大的那个相同,比如都是数字类型的float和int,最终返回值就是float类型,如果类型不同就会尝试转换,无法转换就会返回Object()。(见3)

public class Threetest {
    public static void main(String[] args) {
        //获取a b中的最大值
        int a = 3;
        int b=20;
        int max1=(a>b)?a:b;
        System.out.println("a b中最大值为:"+max1);
 
        //获取 a b c 中的最大值
        int c=88;
        int max2=(a>b)?((a>c)?a:c):((b>c)?b:c);
        System.out.println("a b c中最大值为:"+max2);
 
    }
}

运行结果:

4.键盘录入

 

5.流程控制语句

5.1 顺序结构

程序的执行顺序按照我们写代码的顺序从上往下依次执行

5.2 选择结构

也叫分支结构。包括if选择语句和switch选择语句。

5.2.1 if选择语句

三种形式:

1)第一种语句定义格式:
        if(条件表达式){
            语句体;
        }
    注意事项:
        a. 大括号能不能去掉?
            如果语句体中只有一条语句的话是可以去掉的,如果有多条语句,那么if结构只针对第一条语句生效。
            建议永远不要省略大括号。
        b. 小括号后面能不能写分号?
            可以加,但是后续的大括号中的内容与if语句本身没有关系。
        c. 条件表达式中的逻辑可以很复杂,但是要确保最终的结果要是boolean类型。
2) 第二种语句定义格式:
            if(条件表达式){
                语句体1;
            }else{
                语句体2;
            }
3) 第三种语句定义格式:
            if(条件表达式1){
                语句体1;
            }else if(条件表达式2){
                 语句体2;
            }else if(条件表达式3){
                 语句体3;
            }else if(条件表达式4){
                 语句体4;
            }else if(条件表达式n){
                 语句体n;
            }else{ //最后一个else可以加也可以不加,语法上不报错,根据实际情况来
                语句体n+1;
            }

5.2.2 switch选择结构

语句定义格式

    switch(表达式){
        case 值1:
            语句体1;
            break;
        case 值2:
            语句体2;
            break;
        case 值3:
            语句体3;
            break;
        ...
        default:
            语句体n+1;
            break;
    }

注意事项:

1、表达式的值的类型可以是哪些?可以是byte,short,int,char,jdk1.5之后可以是枚举,jdk1.7之后可以是字符串String类型
2、执行流程:
1)计算表达式中的值
2)拿着这个值匹配对应的case
3)当有匹配的case的时候,执行对应case中的语句体
4)执行完语句体后,如果遇到了break,结束整个switch语句
5)如果没有匹配到对应的case,那么default中的语句体,遇到break结束
3、switch语句结束的条件:
1)遇到了break,跳出整个switch语句
2)正常执行到末尾
3)没有default语句且没有对应的case匹配
4)非正常情况,比如执行到一半断电了
4、break语句可以不加上,语法上是允许不会报错,但是从执行逻辑上来看,可能结果不是我们想要的结果
5、case 后面匹配的内容必须是一个常量
6、default语句能不能没有,或者随便放在case的之间,顺序不保证,行不行?
 default不加从语法层面上说是没有问题,但是从逻辑严谨性上面来说,是有问题的,用户体验不太好
 default语句完整写法在哪里都可以,因为switch语句执行的时候严格按照先匹配case,当没有case的时候,再去执行default,跟default在哪无关。

实例:

//用switch语句实现键盘录入月份,输出对应的季节
import java.util.Scanner;
public class Switchpratice1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入月份:");
        int month =sc.nextInt();
        switch (month){
            case 3: case 4: case 5:
                System.out.println("春天");
                break;
            case 6: case 7: case 8:
                System.out.println("夏天");
                break;
            case 9: case 10: case 11:
                System.out.println("秋天");
                break;
            case 12: case 1: case 2:
                System.out.println("冬天");
                break;
            default:
                System.out.println("输入错误");
                break;
        }
    }
}

输出结果:

 

5.3 循环结构

5.3.1 for循环语句

语句定义格式

for( 初始化语句 ; 判断条件语句 ; 控制条件语句 ) {
         循环体语句;
    }

注意事项

1、初始化语句能不能写在循环的外部
能写。如果写在for循环中,在循环的内部是可以找到的,如果写在了外部,循环内部可以找到,并且出了循环也可以找到
2、判断条件语句能否不写?
从语法正确性来说可以不写,但是不写的后果是会造成死循环
3、控制条件语句能否不写?
从语法正确性来说可以不写,但是不写的后果是会造成死循环
如果写,写在循环体中行不行呢?
可以,只要最终让条件变化就可以了。

实例:

//统计”水仙花数”共有多少个 所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
import java.lang.Math;
 
public class Fortest1 {
    public static void main(String[] args) {
        int num=0;
        for (int i = 100; i < 1000; i++) {
            int baiwei = i / 100;
            int shiwei = i % 100 / 10;
            int gewei = i % 100 % 10;
            if (Math.pow(baiwei, 3) + Math.pow(shiwei, 3) + Math.pow(gewei, 3) == i) {
                System.out.println(i);
                num+=1;
            }
        }
    }
}

运行结果:

 

5.3.2 while循环语句

while语句定义格式:

基本格式
   while(判断条件语句) {
         循环体语句;
   }
扩展格式   (今后工作中常用的扩展格式)
   初始化语句;
   while(判断条件语句) {
         循环体语句;
         控制条件语句;
    }

do....while语句定义格式:

基本格式
   do {
         循环体语句;
   }while((判断条件语句);
扩展格式 (开发常用的是扩展格式)
   初始化语句;
   do {
         循环体语句;
         控制条件语句;
    } while((判断条件语句);
注意:

while循环与do...while循环的区别:
1、while循环执行的逻辑是先判断是否满足循环条件,如果满足,才会执行循环体内容
2、do...while循环执行的逻辑是先执行一次循环体内容,再去判断是否满足循环条件,如果满足才会执行循环体内容

实例:

//我国最高山峰是珠穆朗玛峰:8848m,我现在有一张足够大的纸张,厚度为:0.01m。请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?
 
public class Whiletest1 {
    public static void main(String[] args) {
        float height=0.01f;
        int fre=0;
        while(height<8848){
            height*=2;
            fre+=1;
        }
        System.out.println("折叠"+fre+"次");
 
    }
}

运行结果:

 

5.4 跳转控制语句

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值