zoukankan      html  css  js  c++  java
  • Java变量和Scanner类

    1.变量的分类
    1)按数据类型分类

     
    详细说明:
      1. 整型:byte(1字节=8bit) short(2字节) int(4字节) long(8字节)
          byte范围:-128 ~ 127
        ② 声明long型变量,必须以"l"或"L"结尾
        ③ 通常,定义整型变量时,使用int型。
        ④整型的常量,默认类型是:int型
      2. 浮点型:float(4字节) double(8字节)
        ① 浮点型,表示带小数点的数值
        ② float表示数值的范围比long还大
        ③ 定义float类型变量时,变量要以"f"或"F"结尾
        ④ 通常,定义浮点型变量时,使用double型。
        ⑤ 浮点型的常量,默认类型为:double
      3. 字符型:char (1字符=2字节)
        ① 定义char型变量,通常使用一对'',内部只能写一个字符
        ② 表示方式:1.声明一个字符 2.转义字符 3.直接使用 Unicode 值来表示字符型常量
      4.布尔型:boolean
        ① 只能取两个值之一:true 、 false
        ② 常常在条件判断、循环结构中使用
    2)按声明的位置分类(了解)
    3)定义变量的格式:
        数据类型  变量名 = 变量值;

        数据类型  变量名;
        变量名 = 变量值;
    4)变量使用的注意点:
        ① 变量必须先声明,后使用
        ② 变量都定义在其作用域内。在作用域内,它是有效的。换句话说,出了作用域,就失效了
        ③ 同一个作用域内,不可以声明两个同名的变量
    5)基本数据类型变量间运算规则
        涉及到的基本数据类型:除了boolean之外的其他7种
        自动类型转换(只涉及7种基本数据类型)
      结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
       byte 、char 、short --> int --> long --> float --> double
       特别的:当byte、char、short三种类型的变量做运算时,结果为int型
      说明:此时的容量大小指的是,表示数的范围的大和小。比如:float容量要大于long的容量
    6)强制类型转换(只涉及7种基本数据类型):自动类型提升运算的逆运算
        需要使用强转符:()
        注意点:强制类型转换,可能导致精度损失。
    7) String与8种基本数据类型间的运算
      String属于引用数据类型,翻译为:字符串
      声明String类型变量时,使用一对""
      String可以和8种基本数据类型变量做运算,且运算只能是连接运算:+
      运算的结果仍然是String类型
    避免:
    String s = 123;//编译错误
    String s1 = "123";
    int i = (int)s1;//编译错误
     
    从键盘获取不同类型的变量:需要使用Scanner类
    具体实现步骤:
    1.导包:import java.util.Scanner;
    2.Scanner的实例化:Scanner scan = new Scanner(System.in);
    3.调用Scanner类的相关方法(next() / nextXxx()),来获取指定类型的变量
     
    Scanner 类的 next() nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext hasNextLine 判断是否还有输入的数据
    next()不会吸取字符前/后的空格/Tab键,只吸取字符,开始吸取字符(字符前后不算)直到遇到空格/Tab键/回车截止吸取;
    nextLine()吸取字符前后的空格/Tab键,回车键截止。
    务必注意的问题:
      1)next后面直接使用nextLine
      nextLine()自动读取了被next()去掉的Enter作为他的结束符,所以没办法给从键盘输入值。其他的next的方法,如double nextDouble() , float nextFloat() , int nextInt() 等与nextLine()连用时都存在这个问题,解决的办法是:在每一个 next()、nextDouble() 、 nextFloat()、nextInt() 等语句之后加一个nextLine()语句,将被next()去掉的Enter结束符过滤掉
    import java.util.Scanner;
     
    class ScannerDemo {
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
     
            double sum = 0;
            int m = 0;
     
            while (scan.hasNextDouble()) {
                double x = scan.nextDouble();
                m = m + 1;
                sum = sum + x;
            }
     
            System.out.println(m + "个数的和为" + sum);
            System.out.println(m + "个数的平均值是" + (sum / m));
            scan.close();
        }
    }

    可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果:

  • 相关阅读:
    在阿里写了8年代码后,我才明白这些道理
    2017双11交易系统TMF2.0技术揭秘,实现全链路管理
    加入新公司快速进入状态的心得
    Kibana+ElasticSearch实现索引数据的几种查询方式
    记一次jenkins发生的无法判断字符串前后空格
    ansible-playbook调试
    记一次ansible-playbook jenkins传空格的标量导致删除了服务的主目录
    rabbitmq集群中队列的完整性
    html5分割上传实现超大文件无插件网页上传思路
    html5分割上传实现超大文件无插件网页上传功能
  • 原文地址:https://www.cnblogs.com/lemonzhang/p/12967901.html
Copyright © 2011-2022 走看看