其他分享
首页 > 其他分享> > 对课上相关问题的研究和解答

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

作者:互联网

问题一:从测试中看不足

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