Java-Level1-day02:录入信息案例;变量交换;字面值规则;基本数据类型处理问题;运算符;流程控制if分支结构

package cn.tedu.var;


import java.util.Scanner;

public class Myinfo {
    public static void main(String[] args) {

        //创建一个扫描器,用于接收控制台输入的信息
        Scanner sc = new Scanner(System.in);
        System.out.println(">>");

        //遇到空格或者换行停止接收
        String name = sc.next();
        int age = sc.nextInt();
        double score = sc.nextDouble();

        System.out.println("name:"+name);
        System.out.println("age:"+age);
        System.out.println("score:"+score);

        //写法2:不建议创建3个Scanner对象,浪费内存
        //此时不支持空格作为区分3个变量,认为连续输入的3个值为1个
        //只能使用回车作为区分。
        String name1 = new Scanner(System.in).next();
        int age1 = new Scanner(System.in).nextInt();
        double score1 = new Scanner(System.in).nextDouble();

        System.out.println("name1:"+name1);
        System.out.println("age1:"+age1);
        System.out.println("score1:"+score1);

    }
}

package cn.tedu.var;

public class Demoswap {
    public static void main(String[] args) {
        int a = 3;
        int b = 4;
        int tmp = a;
        a = b;
        b = tmp;
        System.out.println("a=" + a);
        System.out.println("b=" + b);
    }
}

package cn.tedu.type;

public class Demo01Type {
    public static void main(String[] args) {
        //规则1:整数字面值默认是int类型
        //规则2:小数字面值默认是double类型

        //规则3:在不超范围的前提下,可以使用int字面值为byte、
        //      short、char类型赋值,系统会自动按对应的类型处理
        byte b1=127;
        //byte b2 = 128;错误

    }
}

package cn.tedu.type;

public class Demo01Type {
    public static void main(String[] args) {
        //1:字面值规则
        //规则1:整数字面值默认是int类型
        //规则2:小数字面值默认是double类型
        //规则3:在不超范围的前提下,可以使用int字面值为byte、short、char类型赋值,系统会自动按对应的类型处理
        //float a = 123.45; //错,右边是double类型字面量,左 边是float类型,类型不一致
        //int b = 1234L; //错,右边是long型的字面值,左边是int类型,类型不一致
        long c = 1234; //对
        double d = 123.45f; //对
        byte b1=127;
        //byte b2 = 128;错误,超过范围

        //2:隐式转换
        byte a1 = 10;
        int b11 = a1; //byte转int,小转大,可以自动转换
        int a2 = 10, b2 = 20;
        long c2 = a2+b2; //int转long,小转大,可以自动转换
        char a3 = '中'; //数值 20013
        int b3 = a3; //char转int,小转大,可以自动转换
        double c3 = a3; //char转double,小转大,可以自动转换

        //3:强制转换:大类型转小类型可能会造成溢出和精度丢失问题!
        long x = 1024L;
        int y = (int)x; //long转int,大转小,需要加强制转换 符
        System.out.println( y ); //1024
        long i = 1024L * 1024 * 1024 * 4;
        int j = (int)i; //long转int,大转小,需要加强制转换 符
        System.out.println( j ); //0,整数溢出
        double pi = 3.141592653589793;
        System.out.println(pi);
        float f = (float) pi;
        System.out.println(f); //3.1415927,float类型的 小数位只有7位

    }
}

package cn.tedu.type;

public class Demo02Type {
    public static void main(String[] args) {
        //规则1:不同类型的数据进行运算,运算结果的类型 会自动向较大类型转换
        int x = 10;
        long y = 3L;
        // int z = x+y; //错误,int+long,结果是long型,大 转小,需要强转
        int z = (int)(x+y);

        System.out.println( 10 + 3.0 );//13.0 double
        System.out.println( 10 - 3.0 );//7.0 double
        System.out.println( 10 * 3.0 );//30.0  double
        System.out.println( 10 / 3.0 );//3.3333..  double
        System.out.println( 10 / 3 ); //3, int 这里不是四舍五 入,而是直接去掉小数

       // 规则2:byte,short,char三种比int小的整数,参与运算时会自动转成 int 类型
        byte a1 = 3, a2 = 4;
        //byte a3 = a1+a2; //编译错误! a1、a2运算的最终结果 是int类型,赋值给byte是大转小
        byte a3 = 3+4;//字面值在不超过范围可以int转byte,变量不行

        //byte a4 = (byte)a1+(byte)a2; //编译错误! a1、a2运算的最终结果是int类型
        byte a5 = (byte) (a1+a2); //正确,将运算结果强转 为byte类型

        byte b1 = 10;
        short b2 = 20;
        //short b3 = b1+b2; //编译错误! b1、b2运算的最终结 果是int类型,赋值给short是大转小
        short b3 = (short) (b1+b2); //正确,将运算结果强 转为short类型

        char c1 = '中'; //20013
        //char c2 = c1+5; //编译错误,c1+5的结果是int类型,赋 值给char是大转小
        char c3 = (char) (c1+5);//正确,将运算结果强转为char类型--20018,串

        //规则3:整数运算溢出。
        // 整数运算,可以理解为是时钟转圈,超出范围不出错,而是转到一个错误的结果!
        byte d4 = (byte)(127+1);
        System.out.println(d4);//-128

        char d5 = (char)(65535+1); //char:0-65535
        System.out.println((int)d5);//0

        //规则4:浮点数运算不精确
        //由于Java有些小数无法精确的用二进制进行表示(记住这个结论),
        // 所以某些小数在运算时可能会出现不精确的情况
        System.out.println(0.1 + 0.2); //0.3, 0.30000000000000004
        System.out.println(0.2 - 0.1); //0.1
        System.out.println(0.1 * 0.2); //0.02, 0.020000000000000004
        System.out.println(0.2 / 0.1); //2.0
        System.out.println(0.3 - 0.1); //0.2,0.19999999999999998
        System.out.println(0.3 / 0.1); //3.0, 2.9999999999999996


        //规则5:浮点数的特殊值
        //小数除0无穷大,整数除0抛出异常
        System.out.println(1.0/0);//Infinity
    }
}
package cn.tedu.type;

/*
已知:牛郎织女星相距:16.4 光年,光速:299792458 米/秒,喜鹊身长:0.46 米
问:牛郎织女相会,需要多少只喜鹊?
*/
public class Demo03Type {
    public static void main(String[] args) {
        //16.4放前面,一开始就让结果为double,不然int装不下。
        double distance = 16.4*299792458 * 60 * 60 * 24 * 365 ;
        double count = distance / 0.46;
        System.out.println("need " + count + " birds");

    }
}

 

 

 

package cn.tedu.home;

public class Home1 {
    public static void main(String[] args) {
        int i = 5;
        System.out.println( i-- ); //i=5
        int j = 5;
        System.out.println( --j ); //j=4
        int m = 7; m = m-- + --m;
        System.out.println( m ); //m=12
        int n = 9; n = --n + n--;
        System.out.println( n ); //n=16
        System.out.println( "0"+1+2+3+4 );
        System.out.println( 1+"0"+2+3+4 );
        System.out.println( 1+2+"0"+3+4);
        System.out.println( 1+2+3+"0"+4 );
        System.out.println( 1+2+3+4+'0');
    }
}
package cn.tedu.home;

import java.util.Scanner;

public class Home2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("---请输入您的年龄:--- ");
        short age = sc.nextShort();
        if (age >= 60) {
            System.out.println("您属于[老年 人]!");
        } else if (age >= 40) {
            System.out.println("您属于[中年 人]!");
        } else if (age >= 18) {
            System.out.println("您属于[青年 人]!");
        } else if (age >= 0) {
            System.out.println("您属于[未成年 人]!");
        } else {
            System.out.println("您输入的年龄有 误!");
        }

        System.out.println("---请输入月份:---");
        int month = new Scanner(System.in).nextInt();
        if (month >= 3 && month <= 5) {
            System.out.println("您输入的月份为: 春 季!");
        } else if (month >= 6 && month <= 8) { //
            System.out.println("您输入的月份为: 夏 季!");
        } else if (month >= 9 && month <= 11) { //
            System.out.println("您输入的月份为: 秋 季!");
        } else if (month == 12 || month == 1 || month == 2) {
            System.out.println("您输入的月份为: 冬 季!");
        } else {
            System.out.println("您输入的月份不合 法!");
        }
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dpq666dpq666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值