初学java 请教System.in.read();

importjava.io.*;publicclassSysteminRead{publicstaticvoidmain(String[]args){inta=0;Sys... import java.io.*;
public class SysteminRead{
public static void main(String[] args){
int a = 0;
System.out.println(a); //这里输出是0,为什么不是ascii编码48?是不是unicode编码,是不是十六进制表示的即:0000 0000 0000 0000??
try {
a = System.in.read(); //如果输入1的话,这个1是不是用unicode编码的,是不是由两个字节表示?此时a是不是等于ascii编码,而a此时就等于这四个字节的int型表示形式:49,这个49是不是用二进制表示的??还是。。。
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("a = "+a); //如果键盘输入1,输出49
}}
展开
 我来答
stlr2008
2011-12-12 · TA获得超过500个赞
知道小有建树答主
回答量:568
采纳率:0%
帮助的人:393万
展开全部
System.in返回的是InputStream指向命令行输入的字节流,它的read方法以字节流的方式来读取命令行的输入的数据。

也就是说,输入的字符,以字节流的方式从命令行传递给变量a,因此此时a是一个整数(字节流以整数的方式来表示)。

实际上这个整数是ascii码中对应十进制数(具体可查看ascii码对照表)。
比如输入a,因为a在ascii码中对应的十进制数是97,所以输出的就是97
追问
字节流都是以整数方式表示吗?感觉好抽象
追答
System.in.read()返回的是输入数值的 ASCII 码(一个 int 整数)。
之前回答是复制别人的,我现在说下我的看法。
import java.io.*;
public class SysteminRead{
public static void main(String[] args){
int a = 0;
System.out.println(a); //这里输出是0,是因为你的a的值被你之前初始化的就是 0,和ascii没关系。
try {
a = System.in.read(); //如果输入1的话,因为 System.in.read();返回的是你输入所对引得ascii码,所以a=49;
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("a = "+a); //如果键盘输入1,如上a已经为49了,输出自然是49.不要想得太复杂。
}}
quanpingqp
2011-12-12
知道答主
回答量:26
采纳率:0%
帮助的人:12.3万
展开全部
你看一下有关输入输出流的知识吧 。java中是使用unicode编码表示,但是也分字节和比特的。
从键盘输入的是字符,System.out.println(a); 中的a是定义为int的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
helen321996
2011-12-12 · TA获得超过1377个赞
知道大有可为答主
回答量:2118
采纳率:0%
帮助的人:1198万
展开全部
System.in.read()返回的是输入数值的 ASKII 码(一个 int 整数)。
追问
在java中不是用unicode编码的吗?返回的是ASCII码??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式