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 引用数据类型

java用怎么用double输入 java输入一个double类型的变量_java

 

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

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)); //先进行括号中的运算
    }
}

执行结果:

java用怎么用double输入 java输入一个double类型的变量_c++_02

 

3.运算符

java用怎么用double输入 java输入一个double类型的变量_System_03

 

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)); //取余
    }

运行结果:

java用怎么用double输入 java输入一个double类型的变量_System_04

 

++,-- 自加,自减


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


3.2 赋值运算符

注意:


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


3.3 比较运算符

3.4 逻辑运算符

java用怎么用double输入 java输入一个double类型的变量_前端_05

 

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
 
    }
}

运行结果 :

java用怎么用double输入 java输入一个double类型的变量_java用怎么用double输入_06

3.5 位运算符

java用怎么用double输入 java输入一个double类型的变量_java用怎么用double输入_07

 


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


java用怎么用double输入 java输入一个double类型的变量_前端_08

java用怎么用double输入 java输入一个double类型的变量_java用怎么用double输入_09

 

java用怎么用double输入 java输入一个double类型的变量_c++_10

 

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);
    }
}

运行结果:

java用怎么用double输入 java输入一个double类型的变量_c++_11

 

 

3.6 三目运算符

java用怎么用double输入 java输入一个double类型的变量_前端_12

 需要注意的是:

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

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);
 
    }
}

运行结果:

java用怎么用double输入 java输入一个double类型的变量_System_13

4.键盘录入

java用怎么用double输入 java输入一个double类型的变量_java用怎么用double输入_14

 

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;
        }
    }
}

输出结果:

java用怎么用double输入 java输入一个double类型的变量_System_15

 

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;
            }
        }
    }
}

运行结果:

java用怎么用double输入 java输入一个double类型的变量_java_16

 

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+"次");
 
    }
}

运行结果:

java用怎么用double输入 java输入一个double类型的变量_System_17

 

5.4 跳转控制语句

java用怎么用double输入 java输入一个double类型的变量_c++_18