目录

课前先导

一、Scanner类的用法

二、Scanner语句分析

1、Scanner类

2、Scanner sc = new Scanner(System.in)

3、Scanner获取不同类型的方法以及成员运算符(.)

三、数据类型转换

1、赋值运算时的自动类型转换

2、赋值运算是的强制类型转换

四、字符型的运算(char)

五、print与println的区别

六、Java中的转义字符


课前先导

我们前面也做了几个程序,可程序中的数据都是我们自己给的,而我们做开发,开发的项目是给客户的,要客户能自己输入数据,但不能让客户通过代码来修改数据,不然我们的代码谁都可以拿去用,谁都可以赋复制,所以,我们不能让客户看到我们的代码,我们要让客户通过控制台输入,这就要用到Scanner类的用法。

Scanner类是Java中util包中封装好的一个类,我们不需要去写这个类,直接引用就可以了。

一、Scanner类的用法

首先我们定义个早餐类Breakfast,我早餐一般是吃包子的,一块五一个,我们定义个字符串类型的变量foodName来存包子,定义个double变量来存单价。我每次去买包子,老板不会想给我拿几个就拿几个吧,他会问:要几个啊?我们定义个int变量的num来存我们要买的包子个数,这个是要我们自己输入的

接下来要顾客自己来输入包子的数量,要是老板想给几个就给几个,我不买了

上图就是运行的结果,因为程序是按顺序结构运行的,当程序运行到"num = sc.nextInt()"时;这条语句代表我们要输入一个int类型的数据,然后把这个数据赋值给num,我们没输入,程序就不会向下运行,最后一条语句就不会输出。

我早餐平稳发挥4个包子,超常发挥没试过,时间不够,就是感觉没吃饱

我们输入个4,然后回车,程序就会继续运行了,如果输入的数据不是int类型,那么机会报错!

二、Scanner语句分析

1、Scanner类

Scanner是java中util包中封装好的一个类,所以我们如果要用Scanner类的话一定要导入这个包;"import java.util.Scanner";我们在写代码的时候可以先不写这条语句,等输入完“Scanner sc = new Scanner(System.in)”会报错;我们把鼠标放在Scanner上,点击一下,就会在输入界面自动生成导包语句;导包语句的位置,一定要在包名和类名之间,否则会报错。

2、Scanner sc = new Scanner(System.in)

这里我们是声明了一个Scanner类的对象,java语言不就是面向对象编程嘛;这是我们跟对象这个概念的第一次接触,但我们还没学到对象,目前知道怎么用就好了,我们看下图

运用Scanner类不一定要先导包,但一定要导包。上图我们可以看到,我们声明了两个变量,都没有报错,这说明什么?类也可以做数据类型!!!这个我们先了解一下就好。

Scanner sc = new Scanner(System.in) 中 sc是对象名,就像变量名一样,可以随便定义;Scanner(System.in)是一个有参方法,目前我们还没学方法,知道一下就行。

3、Scanner获取不同类型的方法以及成员运算符(.)

import java.util.Scanner;public class Draft {public static void main(String[] args) {Scanner draft = new Scanner(System.in);byte a;short b;int c;long d;float e;double f;char g;boolean h;String x;System.out.println("获取byte类型的数据a:");a = draft.nextByte();System.out.println("获取short类型的数据b:");b = draft.nextShort();System.out.println("获取int类型的数据c:");c = draft.nextInt();System.out.println("获取long类型的数据d:");d = draft.nextLong();System.out.println("获取float类型的数据e:");e = draft.nextFloat();System.out.println("获取double类型的数据f:");f = draft.nextDouble();System.out.println("获取char类型的数据g:");g = draft.next().charAt(0);System.out.println("获取boolean类型的数据h:");h = draft.nextBoolean();System.out.println("获取字符串数据x:");x = draft.next();}}

nextByte()     从控制台获取byte类型的数据;

nextShort()    从控制台获取short类型的数据;

nextInt()        从控制台获取int类型的数据;

nextLong()    从控制台获取long类型的数据;

nextFloat()    从控制台获取float类型的数据;

nextDouble()  从控制台获取double类型的数据;

next().charAt(0)    从控制台获取字符类型的数据,Java编程语言中没有获取字符串的方法,只有通过charAt()输出字符串的第一个字符来获得;

nextBoolean()    从控制台获取boolean类型的数据;

next()                 从控制台获取字符串;

语句中的" . "是成员运算符

运行结果:

获取byte类型的数据a:
1
获取short类型的数据b:
2
获取int类型的数据c:
3
获取long类型的数据d:
4
获取float类型的数据e:
1.2
获取double类型的数据f:
1.23
获取char类型的数据g:
A
获取boolean类型的数据h:
true
获取字符串数据x:
Hello

三、数据类型转换

继续我们上面的买包子程序

我买了4个包子,应该付给老板6块钱,我们定义个int类型的变量sunMoney去接收,

出问题了朋友们,报错了!

我先声明一点,我的电脑没问题,可能是开发工具MyEclipse的问题,垃圾软件,卸载。

再声明一点,MyEclipse是没问题的,

有发现:num是int类型的数据,price是double类型的数据,那他们的乘积应该是什么类型的呢?看下图

我们把sumMoney的数据类型改为double型,代码就不报错了,为什么?

因为超市的金额都是两位小数的,所以改为double保存两位小数就对了。完全是扯。

前面我们讲了数据类型在内存中的大小(详情请参考:http://t.csdn.cn/wtgXg),int类型占4个字节,double类型占8个字节,我们把4个字节内存里面的数据放入8个字节内存里面是完全可以的,把8个字节的内存放进4个字节的内存,明显是不行的。

比如我一顿能干三碗饭,婴儿一顿饭两勺奶粉,把我胃里的食物放到他的胃里放得下吗,请大家爱护生命。但两勺奶粉是不是我随便就能吃下。这就是小的内存能放进大的内存,大的内存放不进小的内存

总结:

(1)不同的基本数据类型之间进行运算时需要进行类型转换。
(2)除布尔类型外,所有基本数据类型进行运算时都要考虑类型转换,主要应用在算术运算时和赋值运算时。
             算术运算时
                            存储位数越多,类型的级别越高。类型转换如下
                            byte-->short-->int-->long-->float-->double
                            char-->int-->long-->float-->double

赋值运算的自动转换有两种方式:

1、赋值运算时的自动类型转换

将低级别的类型赋值给高级别类型时将进行自动类型转换。

2、赋值运算是的强制类型转换

利用强制转换,我们继续用int类型的sumMoney来接收付款金额,把包子的单价转成int类型

付款金额不对了!!因为我们是把包子的单价1.5元转int类型变成了1元,参与运算的是1,所以运算结果是4;我们要转的是计算后的金额,如下图

强制类型转换有一个缺点,比如我们的金额如果不是整数,int取整就会导致小数部分丢失。

总结:

(1)强制类型转换,可能会丢失数据;

(2)存在继承关系的引用数据类型也可以进行自动转换和强制类型转换。

四、字符型的运算(char)

字符类型的运算时通过ASCLL码的值进行运算的

我们只要记住几个特殊的就够用了:

NULL(空值)   0  ; 空格   32 ; 字符0  48 ; 字符9   57   ;大写字母A    65  ; 小写字母a    97 。

大写字母和小写字母相差32;

五、print与println的区别

print输出完不会换行,println输出完会换行

六、Java中的转义字符

在java字符常量中,转义字符是用反斜杠(\)表示,作用是用来转义后面一个字符,转义后的字符通常用来表示一个不可见的字符或者有特殊作用的字符。

public static void main(String[] args) {System.out.println("我是张三\n练习两年半;"); // \n表示换行符,将\n后面的内容进行换行System.out.println("**********************************");System.out.println("喜欢唱\t跳\trap\t篮球!"); // \t表示制表符,将光标移到下一个制表符的位置,相当于Tab键System.out.println("**********************************");System.out.println("练习两\r年\r半;"); // \r表示回车符,(换行)System.out.println("**********************************");System.out.println("我是\'张三\';"); // \'表示单引号字符System.out.println("**********************************");System.out.println("我是\"张三\";");// \"表示双引号字符System.out.println("**********************************");System.out.println("我是\\张三\\;");// \\表示反斜杠字符System.out.println("**********************************");}

运行结果:

我是张三
练习两年半;
**********************************
喜欢唱 跳   rap 篮球!
**********************************
练习两
年
半;
**********************************
我是'张三';
**********************************
我是"张三";
**********************************
我是\张三\;
**********************************

今天的学习内容就这些,其实没什么内容,大家只要记住Scanner类的固定用法就行了,数据类型转换记一下格式,基本没什么内容。关于Java的学习也有一段时间了,我们也应该做一下练习提升自己的技能,我的新栏目——Java试炼:超越上一秒,已开启,题目是和目前这个栏目所对应的,欢迎大家浏览。

1、初识Java:http://t.csdn.cn/eKTsI;

2、变量、常量和基本数据类型:http://t.csdn.cn/wovXK

今天就到此结束,我是一米八有腹肌,低于半小时你报警的ikun,觉得内容不错的点点关注,我们下篇博文见,拜拜!

7、Java基础——从控制台输入:Scanner类的的用法、数据类型转换、字符型的运算、print与println的区别、Java中的转义字符相关推荐

  1. 小汤学编程之JAVA基础day02——数据类型、Scanner类的使用

    一.JAVA的数据类型 1.变量      2.常量     3.基本数据类型     4.引用数据类型     5.数据类型转换 二.Scanner类的使用 1.作用      2.引入     3 ...

  2. Java基础(12)Scanner类、String类

    1.Scanner类 1. Scanner类概述:一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器 2. Scanner的构造方法:Scanner(InputStream source) ...

  3. Java基础教程,第三讲,运算符 变量定义 数据类型转换

    2019独角兽企业重金招聘Python工程师标准>>> 学完此次课程,我能做什么? 学完此次课程我们可以学会Java的运算符,以及数据类型的自动转换和强制转换. 学习此次课程,需要多 ...

  4. java基础-基本的输入与输出

    java基础-基本的输入与输出 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.基本的输出 基本的输出,System.out 就是系统的标准输出设备,默认为显示器. 1>. ...

  5. java 监听控制台输入

    分享一下我写的java监听控制台输入并可以给出响应的功能. 很多时候需要监听控制台的输入内容,相当于信号监听,根据输入的内容做出相应的动作,这里给出我的一个简单实现. 要注意的是:监听得到的消息中前后 ...

  6. 接收用户的输入 Scanner类

    接收用户的输入 Scanner类 通过这个工具类,接收用户数据,为自己所使用 例子 固定的写法 获得一个Scanner对象 这个数据英雄的本领,接收键盘的输入 Scanner 数据英雄的名称=new ...

  7. 循环获取控制台输入scanner.nextLine()问题

    循环获取控制台输入scanner.nextLine()问题 直接上代码 public static void main(String[] args) {Scanner scanner = new Sc ...

  8. Java基础学习——第十章 枚举类注解

    Java基础学习--第十章 枚举类&注解 一.枚举类(enum) 1. 枚举类的概念 枚举类:类的对象只有有限个,确定的 线程状态:创建.就绪.运行.阻塞.死亡 当需要定义一组常量时,强烈建议 ...

  9. Java基础语法(七)——类和对象

    文章目录 Java基础语法(七)--类和对象 一.类和对象的初步认识 二. 类和类的实例化 1.类的定义 2.实例化对象 3.如何使用类中的数据 三. 类的成员 1. 字段/属性/成员变量 (1)实例 ...

最新文章

  1. 2(3).选择排序_快排(线性表)
  2. 选择域名需注意什么才更有利于网站优化?
  3. AliGraph:一个工业级的图神经网络平台
  4. 流计算程序不报错,但是没有输出的一些原因(持续更新中)
  5. mysql use index用法_MySQL中USE INDEX 和 FORCE INDEX
  6. github-仓库基本-下载-上传
  7. python什么是数据结构_Python中最有效的图形数据结构是什么?
  8. linux查看端口被哪个服务占用的命令
  9. 数据--第32课 -二叉树的定义
  10. java多线程的常用方法(以及注意事项)
  11. 文本处理三剑客之gawk
  12. 飞机大战php 源码,飞机大战资源素材及完整代码
  13. 加载配置文件(xml文件,properties文件)demo
  14. Unity性能优化之物理引擎的优化(一)
  15. app 手机网页一些小知识
  16. iOS微信消息延迟和不提醒,这样即可解决
  17. incapsula加速教程
  18. 删除文件夹时,报错“错误ox80070091:目录不是空的”,该如何解决?
  19. 哈尔滨工业大学深圳计算机学院院长,哈工大计算机学院院长徐晓飞来访我院
  20. 3 有限马尔可夫决策过程(Finite Markov Decision Processes)

热门文章

  1. 模仿的网易和钱钱钱的腾讯
  2. umi 约定式路由 关于 history.goBack() 的奇奇怪怪问题
  3. 赞 ( 84 ) 微信好友 新浪微博 QQ空间 180 SSD故事会(14):怕TLC因为你不了解!【转】...
  4. flex 布局,省略号失效
  5. vue实现密码显示隐藏、很简单易懂
  6. 学习Java第十九天(一):1、Java中的网络编程
  7. 空间大数据相关的技术
  8. 4.File类、Lambda表达式、JAVA IO
  9. easyExcel中导入文件参数校验实现方案
  10. win10停止更新_你的win10即将终止!各大版本服务终止日期大全,准备好了吗?...