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();
    }
}
复制代码

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

 

posted @   kkzhang  阅读(322)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示