JAVA基础学习DAY02

1.类型转换

1.1自动类型转换
/*
    自动类型转换 小的数据类型向大的数据类型转换,不会造成数据精度丢失

    转换格式:
        byte --> short
                        -->int --> long --> float -->double
                   char
    byte和short不能直接转换成char
    在参与运算的时候,如果有高类型的数据参与运算,所有数据自动转换成高类型的数据
 */
public class Demo01 {
    public static void main(String[] args) {
        char c = 'a';
        System.out.println(c);
        int i = c;
        System.out.println(i);

        int x = 100;
        long y = x;
        System.out.println(x);
        System.out.println(y);
        System.out.println(Float.MIN_VALUE);
        System.out.println(Float.MAX_EXPONENT);

        //byte和short不能直接转换成char
        /*byte b = 10;
        short e = 10;
        char d = b;
        char h = e;
*/
        //在参与运算的时候,如果有高类型的数据参与运算,所有数据自动转换成高类型的数据
        float f1 = 3.14F;
        int f2 = 314;
        double f4 = 5.12;
        double f3 = f1+f2+f4;


    }
}
基本数据类型,字节数,位数,最大值和最小值。

1、
基本类型:short 二进制位数:16
包装类:java.lang.Short
最小值:Short.MIN_VALUE=-32768-215此方)
最大值:Short.MAX_VALUE=32767215次方-12、
基本类型:int 二进制位数:32
包装类:java.lang.Integer
最小值:Integer.MIN_VALUE= -2147483648-231次方)
最大值:Integer.MAX_VALUE= 2147483647231次方-13、
基本类型:long 二进制位数:64
包装类:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808-263次方)
最大值:Long.MAX_VALUE=9223372036854775807263次方-14、
基本类型:float 二进制位数:32
包装类:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-452-149次方)
最大值:Float.MAX_VALUE=3.4028235E382128次方-15、
基本类型:double 二进制位数:64
包装类:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-3242-1074次方)
最大值:Double.MAX_VALUE=1.7976931348623157E30821024次方-1
1.2强制类型转换
/*
    大的数据类型,向小的数据类型转换,
    有可能造成数据精度丢失,
        1.如果大的数据类型存储数值,在小的数据类型的取值范围内,就不会造成数据精度的丢失
        2.如果大的数据类型存储数值,超出了小的数据类型的取值范围,就会造成数据精度丢失

    格式:
        目标数据类型 变量名 = (目标数据类型)变量名或值;

 */
public class Demo02强制类型转换 {
    public static void main(String[] args) {
        int a = 10;
        a = 130;
        byte b = (byte) a;
        System.out.println(a);
        System.out.println(b);
    }
}

2.键盘录入 Scanner

步骤:
  	1.导包
  	import java.util.Scanner
  	2.创建对象
  	Scanner sc = new Scanner(System.in);
	3.接收数据
    int num = sc.nextInt();
// 	1.导包
import java.util.Scanner;
/*
    步骤:
  	1.导包
  	import java.util.Scanner
  	2.创建对象
  	Scanner sc = new Scanner(System.in);
	3.接收数据
    int num = sc.nextInt();
 */
public class Demo01 {
    public static void main(String[] args) {
        //2.创建对象
        Scanner sc = new Scanner(System.in);
        //3.接收数据
        System.out.println("请输入一个整数:");
        int num = sc.nextInt();
        System.out.println("键盘录入的数据是:"+num);
        //byte b = sc.nextByte();//补全代码 alt+回车
        System.out.println("请输入一个字符串:");
        String s = sc.next();
        System.out.println(s);
       /* System.out.println("请输入一行字符串:");
        String s1 = sc.nextLine();
        System.out.println(s1);*/
    }
}

3.运算符

3.1算术运算符
/*
    算术运算符:
        +:求和
        -:求差
        *:求积
        /:求商
        %:求余

        数学:5÷3 = 1......2
        java:
            1.求商
                5/3 = 1
                3/5 = 0
            2.求余
                5%3 = 2
                3%5 = 3
 */
public class Demo01算术运算符 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        //+:求和
        int c = a + b;
        System.out.println(c);
        //-:求差
        int d = a - b;
        System.out.println(d);
        // *:求积
        int e = a * b;
        System.out.println(e);
        //:求商
        int f = b / a;
        System.out.println(f);
        int g = a / b;
        System.out.println(g);

        //%:求余
        int h = b % a;
        System.out.println(h);
        int i = a % b;
        System.out.println(i);
        //如果有浮点型数据参与运算,获取的结果是浮点型的
        double x = 3.0;
        double y = 6.0;
        System.out.println(x / y);

    }
}
#### 3.2练习
```java
import java.util.Scanner;

/*
    键盘录入一个求各个位上数字
    分析:
        1.键盘录入
            导包 import java.util.Scanner
            创建对象
                Scanner sc = new Scanner(System.in);
            接收数据
                int num = sc.nextInt();
         2.获取这个四位数各个位上数字
            2.1 个位   num%10   1234%10==4
            2.2 十位   num/10%10   1234/10 ==123  123%10 ==3
            2.3 百位   num/100%10     1234/100==12   12%10 ==2
            2.4 千位   num/1000%10


 */
public class Demo02练习 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个四位数:");
        int num = scanner.nextInt();
        // 2.获取这个四位数各个位上数字
        int ge = num%10;
        int shi = num/10%10;
        int bai = num/100%10;
        int qian = num/1000%10;
        System.out.println("个位:"+ge);
        System.out.println("十位:"+shi);
        System.out.println("百位:"+bai);
        System.out.println("千位:"+qian);
    }
}
3.3字符的加操作
/*
    字符的加操作,先把字符转成int类型的ASCII码值,在参与运算,结果是int类型的

    byte short char 三种数据类型的数据在参与运算的时候,首先要转成int类型的值,在参与运算,结果是int类型的,
    如果有高类型的参与运算结果是高类型的数据
 */
public class Demo03 {
    public static void main(String[] args) {
        char c = 'a';
        int i = c;
        System.out.println(i);
        int j = 'A';
        System.out.println(j);
        int x = '0';
        System.out.println(x);
        int y = '0'+1;
        System.out.println(y);

        char d = 'A';
        int e = d+c;
        System.out.println(e);

        byte f = 10;
        byte g = 20;
        int s = g + f;
        System.out.println(s);

        short s1 = 30;
        short s2 = 40;
        int s3 = s1 + s2;
        System.out.println(s3);

    }
}
3.4 字符串的加操作
/*
    字符串的加:
        字符串的连接

 */
public class Demo04字符串的加 {
    public static void main(String[] args) {
        System.out.println(1+2+3+4+"hello"+5+6+7+8+9);//10hello56789
        System.out.println(1+2+3+4+"hello"+(5+6+7+8+9));//10hello35
    }
}
3.5 自增自减运算符
/*
    自增自减运算符:
        对变量自增一或者对边自减一
        ++:
        --:
 */
public class Demo05自增自减运算符 {
    public static void main(String[] args) {
        // ++:
        // 在单独使用的使用,无论放在变量前面还是后面都是对变量自增一,
        // 在参与运算的时候,如果++在变量的后面,先参与运算,后对变量自增一
        // 在参与运算的时候,如果++在变量的前面,先对变量自增一,后参与运算
        int a = 10;
//        a++;
//        ++a;
//        int b = a++;
        int b = ++a;
        System.out.println(a);
        System.out.println(b);
        //--:
        //在单独使用的使用,无论放在变量前面还是后面都是对变量自减一
        // 在参与运算的时候,如果--在变量的后面,先参与运算,后对变量自减一
        // 在参与运算的时候,如果--在变量的前面,先对变量自减一,后参与运算
        int c = 20;
//        c--;
//        --c;
//        int d = c--;
        int d = --c;
        System.out.println(c);
        System.out.println(d);
    }
}
```
#### 3.6关系运算符
```java
/*
    关系运算符:
        >
        >=
        <
        <=
        ==
        !=
    关系表达式结果是布尔类型的值 true false
 */
public class Demo06关系运算符 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a>b);//false
        System.out.println(a<b);//true
        b = 10;
        System.out.println(a>=b);//true
        System.out.println(a<=b);//true
        System.out.println(a == b); //true
        b = 30;
        System.out.println(a == b); //false
        System.out.println(a != b); //true
    }
}
```
#### 3.7逻辑运算符
```java
/*
    逻辑运算符: 逻辑运算符两边放的是关系表达式,结果是布尔类型的值 true或false
        &  :
        |  :
        !  :
        ^  :
 */
public class Demo07逻辑运算符 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 30;
//        &  :  见false 则false
        System.out.println((a>b) & (a>c)); //false & false ==> false
        System.out.println((a<b) & (a>c)); //true  & false ==> false
        System.out.println((a>b) & (a<c)); //false & true  ==> false
        System.out.println((a<b) & (a<c)); //true  & true  ==> true
        System.out.println("------------------------");
//          |  : 见true 则true
        System.out.println((a>b) | (a>c)); //false | false ==> false
        System.out.println((a<b) | (a>c)); //true  | false ==> true
        System.out.println((a>b) | (a<c)); //false | true  ==> true
        System.out.println((a<b) | (a<c)); //true  | true  ==> true
        System.out.println("------------------------");
//         ^  :  相同为false 不同true
        System.out.println((a>b) ^ (a>c)); //false ^ false ==> false
        System.out.println((a<b) ^ (a>c)); //true  ^ false ==> true
        System.out.println((a>b) ^ (a<c)); //false ^ true  ==> true
        System.out.println((a<b) ^ (a<c)); //true  ^ true  ==> false
        System.out.println("------------------------");
//        !  :
        System.out.println((a<b));   //true
        System.out.println(!(a<b));  //false
        System.out.println(!!(a<b));  //true
        System.out.println(!!!(a<b));  //false
    }
}
```
#### 3.8短路运算符
```java
/*
    短路运算符:
        &&: 见false 则false ,左边为false 右边不参与运算
        ||:见true 则true ,左边为true 右边就不运算
 */
public class Demo08短路运算符 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 30;
       /* System.out.println((a++>c) && (b++>c)); //false && false ==> false
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);*/
        System.out.println((a++<c) || (b++>c++)); //true || false ==>true
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
}
```
#### 3.9赋值运算符
```java
/*
    赋值运算符:
        = :就是把右边的值赋值给左边变量

复合的赋值运算符 ,隐含了强制类型转换
        += : 变左边变量中的值和右边值相加 把和赋值给左边变量
        -= :
        *=
        /=
        %=
 */
public class Demo09赋值运算符 {
    public static void main(String[] args) {
        int a = 10;
        System.out.println(a);
        a = 20;
        System.out.println(a);
//         +=
        int b = 30;
        b+=10; //b = b+10;
        System.out.println(b);

        short c = 40;
        c+=40;// c = (short) (c+40);
        System.out.println(c);

        int d = 50;
        d-=10;
        System.out.println(d); //40
        d*=10;
        System.out.println(d); //400
        d/=20;
        System.out.println(d); //20
        d%=3;
        System.out.println(d); //2

    }
}
```
#### 3.10三元运算符
```java
/*
    三元运算符:
        格式:
        关系表达式?表达式1:表达式2
        运算规则:
            先计算关系表达式的值,如果为true,取表达式1的值,如果为false,取表达式2的值
 */
public class Demo10三元运算符 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        //求两个数的最大值
        int max = a > b ? a : b;
        System.out.println(max);
        //求两个数的最小值
//        int min = a > b ? b : a;
        int min = a < b ? a : b;
        System.out.println(min);
    }
}
```
#### 3.11练习
```java
/*
    键盘录入两个数字,求最大值 求最小值
    分析:
        1.键盘录入
        2.使用三元运算符求结果
 */
 public class Demo11练习 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int num1 = sc.nextInt();
        System.out.println("请输入一个整数:");
        int num2 = sc.nextInt();
        //2.使用三元运算符求结果
        int max = num1>num2?num1:num2;
        System.out.println("最大值:"+max);

        int min = num1<num2?num1:num2;
        System.out.println("最小值:"+min);

    }
}
```
#### 3.12练习
```java
import java.util.Scanner;

/*
    键盘录入三个数字,求最大值
 */
public class Demo12练习 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);//扫描键盘,等待录入
        System.out.println("请输入第一个数字:");
        int num1 = sc.nextInt();//接收键盘录入的第一个数字
        System.out.println("请输入第二个数字:");
        int num2 = sc.nextInt();
        System.out.println("请输入第三个数字:");
        int num3 = sc.nextInt();

        //1.求前两个数的最大值,当成临时最大值
        int tempMax = num1>num2?num1:num2;
        //2.使用临时的最大值和第三个数字比较,求出最终的最大值
        int max = tempMax>num3?tempMax:num3;
        System.out.println(max);

    }
}
```
#### 3.13 练习
```java
/*
    键盘录入一个三位数字,判断这是数字是否是水仙花数,三元运算符 如果是返回true 不是返回false

    水仙花:
        1.三位数
        2.算法:各个位数数字的立方和等于数字本身
        3.举栗子:153 = 1*1*1 + 5*5*5 + 3*3*3
 */
public class Demo13练习 {
    public static void main(String[] args) {
        //1.键盘录入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个三位数:");
        int num = sc.nextInt();

        //2.求三位数各个位上数字 153 370 371 407
        int ge = num%10;
        int shi = num/10%10;
        int bai = num/100%10;
        //3.求各个位上数字的立方和
        int sum = ge*ge*ge + shi*shi*shi +bai*bai*bai;
        //4.使用三元运算符 将立方和和数字本身比较 如果相等 就是水仙花数 返回true 否则是false
        boolean flag = sum == num ? true : false;
        System.out.println(num+"是水仙花数:"+flag);

    }
}
```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值