问题一:从测试中看不足
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));
好啦!这次的基础知识疑问解答就先到这里啦!拜拜!
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/288622.html