ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

对课上相关问题的研究和解答

2022-09-10 15:03:33  阅读:164  来源: 互联网

标签:反码 String int double 课上 类型 相关 原码 解答


问题一:从测试中看不足

1、JAVA的基本运行单位是类

2、类中由类变量和类方法共同组成

3、变量的类型相互之间存在可以转换的关系,具体来说,可以分为以下几种情况:

1、(byte、short、char)-int-long-float-double,从低级到高级的排序,数据类型可以直接由低级向高级转换

举例:低级向高级:byte b;   int i=b;

     高级向低级:int i;     byte b=(byte)i;

2、Java包装类

Boolean--boolean
Integer--int
Character--char
Long--long
Float--float
Double--double

3、String类型和int类型之间的转换

1、String转换为int

int i=Integer.parseInt(String);

int i=Integer.valueOf(String).intValue();

2、int转换为String

String s=String.valueOf(i);

String s=Integer.toString(i);

4、浮点数的数据类型也可以和其他数据类型进行转换

4、String不是一个数据类型,String是一个类,null是它的默认值

5、static代表的含义是:全局或者静态,用来修饰成员变量和成员方法,被所有对象共享

问题二:对EnumTest.java程序的相关解答

1、运行该程序的结果

2、分析结果

1、枚举类中的各个元素各不相同

2、.getClass()方法表示获取该枚举类型的名称 .isPrimitive()方法表示判断Class是否为原始类型(boolean char byte short int long float double)
由此可知,枚举类型不属于原始类型

3、valueOf()返回的是枚举类中引用的枚举值,与上述的Size s相等

4、运用加强for循环,遍历输出Size枚举类中的各个元素值

3、得出结论

有两种方式获取得到并输出枚举类中的元素的值,我个人认为第二种valueOf()方法获取元素值更为方便一些
比较枚举类型的值,可以用==,也可以用.equals()
对于String类型来说,只能用.equals()进行比较的操作,因为String类型是自定义的,不是原始类型

问题三:数值的二进制表示--有关反码、补码和原码的概念

1、反码:在原码的基础上,最高位数仍旧表示数字的正负,正数的反码与原码相同,负数的反码:其余各个位数上的数字均与原码相反,即为反码

2、原码:共有八位数字,均由0和1组成,最高位数表示数字的正负,正为0,负为1

3、补码:负数在反码的基础上+1,得到补码;正数补码与原码相同

实践一下,看一看Java使用的是哪一种码:

随意进行一个Java加法运算:

已知1的原码为:00000001,-1的原码为:10000001
则1的反码为:00000001,-1的反码为:111111110
则1的补码为:00000001,-1的补码为:11111111

假设为原码:相加得到:10000010!=0--->猜测错误!

假设为反码:相加得到:11111111!=0--->猜测错误!

假设为补码:相加得到:00000000==0--->猜测正确!

所以可以得到结论,Java中所用的数是补码

问题四:实例:两数相加

问题五:测试同名变量的屏蔽原则

结论:由此可知,当在不同作用域中存在同名的变量时,主要遵循以下原则:
1、当在public static void main(String[]args){}中存在某个变量时,输出先考虑该变量
2、当仅仅存在private形式的变量时,输出才考虑到这个变量

总结:“就近”原则

问题六:在运行时用户输入

主要内容:Scanner类

创建输入环境:Scanner sc=new Scanner(System.in);

对于String类型的输入:String s=sc.nextLine();

对于int类型的输入:int i=sc.nextInt();

对于double类型的输入:double d=sc.nextDouble();

注意:在输入int类型的数据之后,不能再输入String类型的数据!

问题七:Java中的类型转换

需要知道的结论:自动类型转换是安全的,也就是不会出现精度损失,数据完好;
而对于强制类型转换,可能会造成信息的缺失,也就是会有精度损失,数据无法按照原状态传递下去。

如果,需要利用同一个数据,将其转换成不同数据类型,可以利用包装类进行数据转换。一般情况下,数据类型的转换,大多采用强制类型转换

实践一下:TestDouble.java(关于浮点数的输出问题)

浮点数呈现出无穷尽的状态,并不能够按照理想状态实现输出---使用double类型的数值进行计算,结果是不精确的

问题的回答:

浮点数类型采用二进制的表示方法,无法精确的表示出1/10,由此产生的精度误差

问题的解决:(同时也是处理精度损失的好方法)

可以引入import.java.math.BigDecimal;导包

BigDecimal f1=new BigDecimal(double);//创建一个具有参数所指定的双精度值的对象

相关应用:

示例:

我们可以发现,double如果作为BigDecimal的构造器参数的话,会出现很长一串数字,

这种情况的大致原因就是:在BigDecimal中,若是设置参数为0.1,其实它的参数不一定是0.1,很可能有很长一串,比不上String的严谨

问题八:字串的联接操作:

由此发现:在输出算数运算结果时,结果也算得上是遵循括号优先的原则了,
若是像第一种输出的话,就相当于是一种字串的联接,不会输出运算结果
第二种输出,相当于在x和y之间加了一个括号,也就相当于System.out.println("x+y="+(x+y));

好啦!这次的基础知识疑问解答就先到这里啦!拜拜!

标签:反码,String,int,double,课上,类型,相关,原码,解答
来源: https://www.cnblogs.com/liuzijin/p/16674040.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有