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();
}
}

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

Java变量和Scanner类的更多相关文章

  1. Java Character & String & Scanner类

    Character类 Character 类用于对单个字符进行操作. Character 类在对象中包装一个基本类型 char 的值 char用法: char ch = 'a'; // Unicode ...

  2. Java常用API(Scanner类)

    Java常用API( Scanner类)1 1.Scanner类 首先给大家介绍一下什么是JavaAPI API(Application Programming Interface),应用程序编程接口 ...

  3. Java基础之Scanner类中next()与nextLine()方法的区别

    java中使用Scanner类实现数据输入十分简单方便,Scanner类中next()与nextLine()都可以实现字符串String的获取,所以我们会纠结二者之间的区别. 其实next()与nex ...

  4. Java中的Scanner类

    java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入.创建Scanner对象的基本语法: Scanner s = new Scanner(System. ...

  5. JAVA IO:Scanner类

    使用Scanner类接收输入数据. JAVA提供了专门的输入数据类,此类可以完成BufferedReader类的功能,也可以方便的对输入数据进行验证,此类存放于JAVA.UTILL包中. 常用方法如下 ...

  6. 9. java API使用 - Scanner类

    一.API概述和使用 1. 概述 ​ API(应用程序编程接口).Java API是一本程序员字典,是JDK提供给我们使用的类的说明文档.这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实 ...

  7. Java中使用Scanner类进行键盘的输入详解

    我们在使用Java写代码时,经常会遇到从键盘输入字符串等操作,这时候我们需要用到的是我们的Scanner类来实现获取用户从键盘上的输入操作. Scanner类是一个基于正则表达式的文本扫描器,它可以从 ...

  8. Java 常用对象-Scanner类

    2017-11-02 16:33:11 Scanner类:一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器. Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白 ...

  9. Java基础教程——Scanner类

    Scanner属于java.util包. java.util包是Java内置的一个工具包,其中包含一系列常用的工具类,如处理日期.日历.集合类: 如果要使用到该包中的类,必须显式引入包名:import ...

随机推荐

  1. 面试突击41:notify是随机唤醒吗?

    做 Java 开发的小伙伴,对 wait 方法和 notify 方法应该都比较熟悉,这两个方法在线程通讯中使用的频率非常高,但对于 notify 方法的唤醒顺序,有很多小伙伴的理解都是错误的,有很多人 ...

  2. v-show与v-if的一次事故

    v-show等同于设置dom元素的display为none,dom元素没有消失而是被隐藏了 v-if是删除或添加dom元素,频繁地删除和添加dom元素会比较耗费性能

  3. R 数据可视化: PCA 主成分分析图

    简介 主成分分析(Principal Component Analysis,PCA)是一种无监督的数据降维方法,通过主成分分析可以尽可能保留下具备区分性的低维数据特征.主成分分析图能帮助我们直观地感受 ...

  4. Java-GUI 编程之 Swing

    Swing概述  实际使用 Java 开发图形界面程序时 ,很少使用 AWT 组件,绝大部分时候都是用 Swing 组件开发的 . Swing是由100%纯 Java实现的,不再依赖于本地平台的 GU ...

  5. Java多线程—线程同步(单信号量互斥)

    JDK中Thread.State类的几种状态 线程的生命周期         线程的安全问题(同步与互斥) 方法一:同步代码块 多个线程的同步监视器(锁)必须的是同一把,任何一个类的对象都可以 syn ...

  6. C++进阶-1-模板基础(函数模板、类模板)

    C++进阶 模板 1.1 函数模板 1 #include<iostream> 2 using namespace std; 3 4 // 模板 5 6 // 模板的简单实例 7 // 要求 ...

  7. Solon 1.7.6 发布,更现代感的应用开发框架

    相对于 Spring Boot 和 Spring Cloud 的项目 启动快 5 - 10 倍 qps 高 2- 3 倍 运行时内存节省 1/3 ~ 1/2 打包可以缩小到 1/2 ~ 1/10(比如 ...

  8. SpringBoot接入两套kafka集群

    引入依赖 compile 'org.springframework.kafka:spring-kafka' 第一套kafka配置 package myapp.kafka; import lombok. ...

  9. 3┃音视频直播系统之浏览器中通过 WebRTC 直播视频实时录制回放下载

    一.录制分类 在音视频会议.在线教育等系统中,录制是一个特别重要的功能 录制一般分为服务端录制和客户端录制 服务端录制:优点是不用担心客户因自身电脑问题造成录制失败(如磁盘空间不足),也不会因录制时抢 ...

  10. 817. Linked List Components - LeetCode

    Question 817. Linked List Components Solution 题目大意:给一个链表和该链表元素组成的一个子数组,求子数组在链表中组成多少个片段,每个片段中可有多个连续的元 ...