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("弄死");

      }

    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容