java从入门到精通-day02、数据类型转换&运算符&逻辑控制语句

day02

一.数据类型转换

按照取值范围从小到大排列:byte,short,char-->int-->long-->float-->double

数据类型转换什么时候发生?   

等号左右两边的数据类型不一致

自动类型转换

自动类型转换:

       取值范围大的数据类型 变量名 = 取值范围小的数据类型

代码演示:

public class Demo01DataType {

   public static void main(String[] args) {

       /*

          等号右边的10默认类型是int型

          将int型的10赋值给了long型的变量l,符合取值范围小的数据类型赋值给取值范围大的数据类型

          发生了自动类型转换

        */

      long l = 10;

      double d = 10;

   }

}

强制类型转换

1.什么时候发生?

        取值范围小的数据类型 变量名 = 取值范围大的数据类型

2.解决:

        取值范围小的数据类型 变量名 =(取值范围小的数据类型) 取值范围大的数据类型


3.代码演示:

public class Demo02DataType {

   public static void main(String[] args) {

       /*

          2.5默认类型是double,此代码是将double型的2.5赋值给了int型的变量i

          由于double取值范围大,int型的取值范围小,那么代码需要强制类型转换

        */

       //int i = 2.5;

       int i = (int)2.5;

       int i1 = (int)100L;

       int j = 10;

       double k = 20.5;

       /*

          一个小类型的和一个大类型的做运算,小类型的会自动提升为大类型的

        */

       int sum = (int)(j+k);

   }

}

4.注意事项:

  1.我们不要随便写强制类型转换(除非是硬性需要),会出现精度损失,数据溢出

  2.byte,short,char参与运算的时候,会首先被提升为int型(char类型提升为int之后,会去一个码表中查询该字     符对应的int值)


二.运算符

1.算数运算符

  基本算数运算符:

    +:加法,和字符串拼接(任何类型遇到字符串都会变成字符串)

    -

    *

    /:取的是整数部分

    %(模):取余数



  自增和自减:变化1

    1.格式:变量++   ++变量     变量--     --变量

    2.单独使用:自己独立成为一句

       i++;

      注意:符号在前或者在后没有区别

      混合使用:和输出语句,赋值语句混合使用了

      注意:符号在前(先运算,再使用-->先运算,运算之后,再用运算后的值)

          符号在后(先使用,再运算-->先使用原值,使用完了以后,再运算)

    3.注意:

       不要作死





2.关系运算符

比较运算符:结果肯定是boolean类型

     ==  :判断两个数是否相等,相等返回true,不相等false

     >:判断前面的是否比后面的大,大的话true,否则false

     <:判断前面的是否比后面的小,小的话true,否则false

     >=:判断前面的是否比后面的大或者相等,如果大或者相等返回true,否则false

     <=:判断前面的是否比后面的小或者相等,如果小或者相等返回true,否则false

     !=:判断两个数是否不等,如果不等返回true,如果相等返回false


代码演示:

   public class Demo01BiJiao {

   public static void main(String[] args) {

       int i = 20;

       int j = 20;

       boolean result01 = i==j;

       System.out.println(result01);

       System.out.println(i<j);

       System.out.println(i!=j);

       System.out.println(i>=j);

       System.out.println(1>=5);

   }

}

3.赋值运算符

赋值运算符:

    基本:=

       int i = 10

    复合:

        +=

           int i =10;

           i+=2-->i = i+2

        -=

           i-=2-->i = i-2

        *=

           i*=2-->i = i*2

        /=

           i/=2-->i = i/2

        %=

           i%=3-->i = i%3

    byte,short,char参与运算的时候会被提升为int型,但是遇到复合赋值运算符,不用强转


代码演示:

   public class Demo01FuZhi {

   public static void main(String[] args) {

       int i = 10;

       /*i+=2;//i = i+2

       System.out.println(i);

       */

       //System.out.println(i/=3);

       System.out.println(i%=3);

       byte b = 10;

       b+=20;//b = b+20

       System.out.println(b);

   }

}

4.逻辑运算符

逻辑运算符:boolean表达式 逻辑运算符 boolean表达式

     &&:与

        有假则假:符号前后有一个boolean表达式是false,那么整体就是false

        特点:短路效果(符号前面为false,符号后面不判断了)

     ||:或

        有真则真:符号前后有一个boolean表达式是true,那么整体就是true

        特点:短路效果:如果符号前为true,后面不看

     !:非

        取反

     ^:异或(不用)

        a和b结果不同为true,相同为false

  扩展:判断一个变量是否是1-100之间的数

       1<=x<=100  错误写法

       x>=1 && x<=100  正确写法

       1<=x && 100>=x   正确写法


代码演示:

  public class Demo01LuoJi {

   public static void main(String[] args) {

      int i = 10;

      int j = 20;

      int k = 20;

      boolean result = (i>k)&&(i>j);

      System.out.println(result);

      System.out.println((i<k)||(i>j));

      System.out.println(!((i<k)||(i>j)));

      System.out.println((i<k)^(i<j));

   }

}

5.三元运算符

格式:boolean表达式?表达式1:表达式2

执行流程:

         1.走boolean表达式,如果是true,走?后面的表达式1

         2.否则走:后面的表达式2



代码演示:

   public class Demo01SuanYuan {

   public static void main(String[] args) {

       /*

         需求:定义一个变量,当分数,判断这个分数是否及格

        */

       int score = 60;

       String result = (score>=60)?"及格":"不及格";

       System.out.println(result);

   }

}

--------------------------------------------------------------------

练习:

  /*

  求出三个数的最大值

  分析:

      1.比较前两个数,拿较大的

      2.拿着较大的值和第三个比,再拿大的

*/

public class Demo02Test {

   public static void main(String[] args) {

       int i = 10;

       int j = 50;

       int z = 30;

       int temp = (i>j)?i:j;

       int result = (temp>z)?temp:z;

       System.out.println(result);

   }

}

三.Scanner:键盘录入

Scanner:

     1.概述:类  Java自带的类

     2.数据类型:引用数据类型

     3.作用:可以通过键盘录入的形式将数据放到代码中

     4.用法:

            导包:idea自动导包-->alt+回车

            创建对象:Scanner 变量名 = new Scanner(System.in)

            调用方法:变量名.方法名()

                    next():录入字符串

                    nextInt():录入整数

                    nextDouble():录入小数

                    nextxxx()


代码演示:

   public class Demo01Scanner {

   public static void main(String[] args) {

       Scanner sc = new Scanner(System.in);

       System.out.println("请你输入用户名:");

       String s = sc.next();

       System.out.println(s);

       System.out.println("请你输入密码:");

       String p = sc.next();

       System.out.println(p);

       System.out.println("登录成功");

   }

}

------------------------------------------------------------------------------------------------

练习:

  /*

  Scanner练习(键盘录入三个整数,利用三元求出最大值)

      步骤:

         1.创建Scanner对象:Scanner sc = new Scanner(System.in);

         2.连续调用3次nextInt方法,键盘录入3个整数

         3.利用三元运算符求出前两个数的较大值

         4.拿着较大的值和第三次录入的数比较,再拿较大的

*/

public class Demo02ScannerTest {

   public static void main(String[] args) {

       Scanner sc = new Scanner(System.in);

       System.out.println("请你输入第一个整数:");

       int a = sc.nextInt();

       System.out.println("请你输入第二个整数:");

       int b = sc.nextInt();

       System.out.println("请你输入第三个整数:");

       int c = sc.nextInt();

       //利用三元运算符求出最大值

       int temp = (a>b)?a:b;

       int result = (temp>c)?temp:c;

       System.out.println("最大值是:"+result);

   }

}

四.分支语句

if语句:

格式:

    if(boolean表达式){

      执行语句

    }

    执行流程:

      1.走if后面的boolean表达式

      2.如果返回true,那么就走if后面大括号中的执行语句

  使用场景:

      有一种情况的,if


代码演示:

  public class Demo01If {

    public static void main(String[] args) {

        /*

          定义一个变量,判断是否大于10

        */

        int i = 10;

        if (i>10) {

            System.out.println("大于10");

        }

        System.out.println("我要执行");

    }

}

if..else语句:

  格式:

      if(boolean表达式){

        执行语句1

      }else{

        执行语句2

      }

    执行流程:

      1.走if后面的boolean表达式

      2.如果返回true,那么就走if后面大括号中的执行语句1

      3.否则,走else后面大括号中的执行语句2

    使用场景:

        2种情况

--------------------------------------------------------------------------------       

    代码演示:

      /*

        练习:

        键盘录入一个数,判断奇偶

    步骤:

      1.创建Scanner:Scanner sc = new Scanner(System.in)

      2.调用nextInt()录入一个整数

      3.利用if语句  %2==0,如果等等于0,输出是偶数

      4.否则就是奇数

*/

public class Demo03IfElseTest {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int a = sc.nextInt();

        if (a%2==0){

            System.out.println("是偶数");

        }else{

            System.out.println("是奇数");

        }

    }

}

else if语句:

格式:

      if(boolean表达式){

        执行语句1

      }else if(boolean表达式){

        执行语句2

      }else if(boolean表达式){

        执行语句3

      }....{

      }else{

        执行语句n

      }

执行流程:

      1.走if后面boolean表达式,如果是true,就走if后面的大括号中的执行语句1

      2.如果是false,就走else if后面的boolean表达式,如果是true,就执行对应的执行语句2

      3.如果还是false,那么就继续走下一个else if 接着判断

      4.如果以上所有的判断都不成立,那么执行else

使用场景:

      2种情况以上的判断


代码演示:

    练习:键盘录入一个分数,划分等级,获取对应的奖励

      95~100 山地自行车一辆

      90~94 游乐场玩一次

      80~89 变形金刚玩具一个

      80以下 胖揍一顿


  public class Demo04ElseIf {

    public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);

      System.out.println("请你输入一个分数:");

      int score = sc.nextInt();

      if (score>=95 && score<=100){

          System.out.println("奖励日本女演员一个!");

      }else if(score>=90 && score<=94){

          System.out.println("奖励日本男演员一个!");

      }else if(score>=80 && score<=89){

          System.out.println("奖励日本小电影网站一个!");

      }else if(score>100 || score<0){

          System.out.println("数据错误");

      }else{

          System.out.println("弄死");

      }

    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容