运算符和Scanner工具的使用

接上篇内容:
1.1位运算符:

 

public class Test04{

         public static void main(String[] args){

                 

                 

                  //位移运算符 >>

                  //箭头向右,是右移运算符,箭头后面是几,则减少几位

                  int i = 8;

                  System.out.println(i >> 2);

 

// << 左移运算符,箭头后面是几,则增加几位

                  System.out.println(i << 1);

 

 

位运算符是二进制的位移

8的二进制为1000,右移2位,减少2位,二进制的值变为0010,转换为十进制为2;相应的左移1位,增加1个0,二进制的值变为10000,转换为十进制为16

1.2条件运算符

语法格式:x?y:z,是唯一的三目运算符

执行过程:x的值为boolean类型表达式,先计算x的值,若值为true,则整个三目运算的结果为表达式y的值,否则整个三目运算的结果为表达式z的值。

它经常用来代替简单的if-else判断,如:

                  int a = 3;

                  int b = 5;

                  String str = "";

                  if(a<b){

                          str = "a<b";

                  }else{

                          str = "a>b";

                  System.out.println(str);

                  }

                  //以上就可以用条件运算符来替代完成

                  String str= (a<b)?"a<b":"a>b";

                  System.out.println(str);

             }

 

 
1.3运算符的优先级
 

 

 

赋值<三目<逻辑<关系<算术<单目

低优先级的运算可以通过增加()的方式来增加优先级

 

1.4基本类型数据的转换

在赋值运算或算术运算时,要求数据类型相同,否则要进行类型转换

数据类型的转换方式有:自动转换和强制转换。整型,浮点型,字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级。

自动转换举例:

                  int c = 10;

                  byte d = 105;

                  float e = 20.5f;

                  float f = c+d+e;

                  System.out.println(f);

 

 

强制转换举例:

我们将int类型转换为float类型,

        c = f;

出现如下错误提示:

 

这时该怎么做呢?

                  c = (int)f;

                  System.out.println(c);

进行强制转换,将输出值变为int类型

 

注意:强制转换会造成数据丢失或失真

总结:类型转换的方向

低------------------------------------------------------>高

byte —> short,char—>int —>long—>float —>double

右侧:所有变量先转换为字节数最多的数据类型,再计算

两侧:左侧宽度>右侧宽度   自动转换

      左侧宽度<右侧宽度    强制转换

 

1.5 Scanner工具

Scanner工具位于JDK文档的java.util包的Scanner类;

它是一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器,Scanner属于引用数据类型。

//在java中要使用一个class,必须先将这个class通过import导入

//System也是个类,为什么无需导入呢?

//因为System类属于系统的lang包,lang包是java的核心包,在创建一个类时,系统会自动导入所有lang包中的内容,所以使用lang包中的内容无需导入

//同一个包中的类互相引用时也不需导入

 

//导入Scanner

import java.util.Scanner;

public class Test05{

         public static void main(String[] args){

                  //创建一个Scanner的变量,来接收键盘的录入

                  Scanner sc = new Scanner(System.in);

                  int i = sc.nextInt();

                  System.out.println("键盘录入的数字是"+i);

输入一个数字168,返回结果如下:

 

拓展练习:

用键盘录入两个数字,并求两个数字之和

import java.util.Scanner;

public class Test05{

         public static void main(String[] args){

        

                  Scanner sc = new Scanner(System.in);

                  System.out.println("请输入第一个数字");

                  float a = sc.nextFloat();

                  System.out.println("请输入第二个数字");

                  float b = sc.nextFloat();

                  System.out.println("两个数字的和是:"+(a+b));

         }

}

运行:

 

 

posted @ 2019-04-19 22:34  SeanGuo  阅读(257)  评论(0编辑  收藏  举报