Java语言基础相关问题
*动手动脑:
问题1: 仔细阅读示例: EnumTest.java,运行它,分析运行结果?
源代码:
public class EnumTest {
public static void main(String[] args) {
Size s=Size.SMALL;
Size t=Size.LARGE;
//s和t引用同一个对象?
System.out.println(s==t);
//是原始数据类型吗? 不是
System.out.println(s.getClass().isPrimitive());
//从字符串中转换
Size u=Size.valueOf("SMALL");
System.out.println(s==u); //true
//列出它的所有值
for(Size value:Size.values()){
System.out.println(value);
}
}
}
enum Size{SMALL,MEDIUM,LARGE};
运行结果
false
false
true
SMALL
MEDIUM
LARGE
问题二:你能得到什么结论?你掌握了枚举类型的基本用法了吗?
枚举类型的常量以字符串的形式顺序储。源代码中s和t不是原始数据类型。getCLass():取得当前对象所属的Class对象 ;isPrimitive:用来判断指定的Class类是否为一个基本类型;因此s.getClass().isPrimitive()用来判断s是否是基本类型。Size u=Size.valueOf("SMALL");用来转化数据类型。Size.value()可遍历Size中的所有元素。使用“==”和equals()方法直接比对枚举变量的值。
*课后练习:
阅读相应教材,或者使用互联网搜索引擎,弄清楚反码、补码跟原码这几个概念,然后编写示例程序,对正数、负数进行各种位操作,观察输出结果,与手工计算的结果进行比对,看看Java中的数是采用上述哪种码表示的。
原码:原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.
反码:正数:正数的反码与原码相同。负数:负数的反码,符号位为“1”,数值部分按位取反。可见如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算.
补码:正数的补码就是其本身。负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)。对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值.
*课后练习:
Java变量遵循“同名变量的屏蔽原则”,请课后阅读相关资料弄清楚相关知识,然后自己编写一些测试代码,就象本示例一样,有意识地在不同地方定义一些同名变量,看看输出的到底是哪个值。
例:package com;
class Test {
private static int value=1;
public static void main(String[] args){
int value=2;
System.out.println(value);
}
}
输出结果:2
每个变量都有一个“有效”的区域,成为有效域,出了这个区域,变量将不再有效。
*动手动脑:
查看Java中每个数据类型所占的位数,和表示数值的范围,你能得出什么结论?
基本数据类型有:
int长度数据类型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits);
float长度数据类型有:单精度(32bits)、双精度(64bits double);
Boolen类型变量的取值有:ture、false;
Char数据类型有:unicode字符;
16位对应的类类型有:Integer 、Float、Boolean、Character、Double、Short、Byte、Long
结论:从低精度向高精度转换、基本类型向类类型转换、类类型向字符串转换、基本类型向字符串的转换
*动手动脑
为什么double类型的数值进行运算得不到“数学上精确”的结果?
float 和double类型主要是为科学计算和工程计算而设计的,他们执行二进制浮点运算,这两种类型在计算机中的储存分为三部分:符号位、指数为、尾数部分。数据以二进制存储在计算机时,会出现无线循环系列,在数据转化中会出现错误。十进制不能准确的表示1/3,同样二进制不能精确的表示1/10。
*注意思考:
在构建BigDecimal对象时应使用字符串而不是double数值,否则,仍有可能引发计算精度问题。(为什么会这样呢?)
double+、-不能准确的代表BigDecimal(String) 16位有效数以上的数字在使用BigDecimal时,应用*、/构造器创建对象才有意义。BigDecimal所创建的对象不能使用传统的等算术运算符直接对其对象进行数学运算,而必须调用相对应的方法。方法中的参数必须是BigDecimal的对象。
*动手动脑
以下代码的输出结果是什么?
int X=100;
int Y=200;
System.out.println("X+Y="+X+Y);
System.out.println(X+Y+"=X+Y");
输出结果:X+Y=100200 300=X+Y
为什么会有这样的输出结果?
语句一输出中“+”连接字面量,计算结果是将X和Y将两数据连接。
语句二输出中“+”是运算符,对X和Y求和。
*课后作业1
1、编写一个程序,用户输入两个数,求出其加减乘除,并用消息框显示计算结果。
源代码:
import java.util.Scanner;
import javax.swing.JOptionPane;// import class JOptionPane
public class Operation {
public static void main( String args[] ){
Scanner input=new Scanner(System.in);
System.out.println("请输入两个整数:");
double a,b;
a=input.nextDouble(); //输入第一个数
b=input.nextDouble(); //输入第二个数
double sum,difference,product,quotient;
sum=a+b;
difference=a-b;
product=a*b;
quotient=a/b;
//输出对话框显示结果
JOptionPane.showMessageDialog(
null, "The sum is " + sum +"\n"+
"The difference is "+ difference +"\n"+
"The product is "+product+"\n"+
"The quotient is "+quotient,"Results",
JOptionPane.PLAIN_MESSAGE );
System.exit( 0 );
}
}
运行结果:
Java语言基础相关问题的更多相关文章
- 01.JAVA语言基础相关解答
1.首先,第一个问题谈到一个java类文件中真的只能有一个公有类吗?并给出了以下代码.可以看出这个程序里有两个public类: 我进行了不同的调试: ...
- 第二十五节:Java语言基础-面向对象基础
面向对象 面向过程的代表主要是C语言,面向对象是相对面向过程而言,Java是面向对象的编程语言,面向过程是通过函数体现,面向过程主要是功能行为. 而对于面向对象而言,将功能封装到对象,所以面向对象是基 ...
- 第二十一节:Java语言基础-关键字,标识符,注释,常量和变量,运算符
Java语言基础-关键字,标识符,注解,常量和变量,运算符 class Demo { public static void main(String[] args){ System.out.printl ...
- 【Java初探02】——Java语言基础
本篇博文就Java语言的一些基本元素进行一些记录和阐述,主要讲解一下Java语言的一些基本构成元素和Java的主类结构. Java语言基础的大致组成 java主类结构 基本的数据类型 变量与常量 运算 ...
- day05<Java语言基础--数组>
Java语言基础(数组概述和定义格式说明) Java语言基础(数组的初始化动态初始化) Java语言基础(Java中的内存分配以及栈和堆的区别) Java语言基础(数组的内存图解1一个数组) Java ...
- day01<计算机基础知识&Java语言基础>
计算机基础知识(计算机概述) 计算机基础知识(软件开发和计算机语言概述) 计算机基础知识(人机交互) 计算机基础知识(键盘功能键和快捷键) 计算机基础知识(如何打开DOS控制台) 计算机基础知识(常见 ...
- 2018.6.13 Java语言基础复习总结
Java语言基础与面向对象编程实践 第一章 初识Java 1.1机器语言 机器语言是指一台计算机全部的指令集合.机器语言室友0和1组成的二进制数,是一串串由0和1组成的指令序列,可将这些指令序列交给计 ...
- Java语言基础(数组)
Java语言基础(数组概述和定义格式说明) A:为什么要有数组(容器) 为了存储同种数据类型的多个值 B:数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. 数组既可以存储基本数 ...
- Java学习总结(二)----Java语言基础
1. Java语言基础 2.1 关键字 定义:被java语言赋予特殊含义的单词 特点:关键字中的字母都为小写 用于定义数据类型的关键字 class,interface,byte,short,i ...
随机推荐
- Xamarin.Android开发实践(六)
Xamarin.Android通知详解 一.发送通知的机制 在日常的app应用中经常需要使用通知,因为服务.广播后台活动如果有事件需要通知用户,则需要通过通知栏显示,而在Xamarin.Android ...
- Sql server之路 (四)添加本地数据库MDF文件
安装环境 VS2008 Vs2008 Sp1 安装系统 Win8 1.创建窗体 右键添加新项 上一步 上一步 点击确定 双击Database1.mdf文件 在列名出填写字段名 保存 Ctrl+S 点 ...
- 从源码编译Chrome(chromium)
转自:http://www.udpwork.com/item/13827.html 官网描述 http://www.chromium.org/developers/how-tos/build-inst ...
- 显示单位px和dip以及sp的区别
显示单位px和dip以及sp的区别(转) dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVG ...
- Codeforces Round #352 (Div. 2) C. Recycling Bottles 贪心
C. Recycling Bottles It was recycling day in Kekoland. To celebrate it Adil and Bera went to Centr ...
- visible,invisible,gone区别
在Android开发中,大部分控件都有visibility这个属性,其属性有3个分别为“visible ”.“invisible”.“gone”.主要用来设置控制控件的显示和隐藏.有些人可能会疑惑In ...
- SQL2005备份数据库到远程服务器中
--打开高级设置EXEC sp_configure 'show advanced options', 1RECONFIGURE--打开xp_cmdshell扩展存储过程EXEC sp_configur ...
- CDH 的Cloudera Manager免费与收费版的对比表
CDH 特性 免费版 付费版 Deployment, Configuration & Management 系统管理 Automated Deployment & Hadoop Rea ...
- html整理(2)
使用mailto在网页中链接Email地址 <a>标签还有一个作用是可以链接Email地址,使用mailto能让访问者便捷向网站管理者发送电子邮件.我们还可以利用mailto做许多其它事情 ...
- HDU3341 Lost's revenge(AC自动机+DP)
题目是给一个DNA重新排列使其包含最多的数论基因. 考虑到内存大概就只能这么表示状态: dp[i][A][C][G][T],表示包含各碱基个数为ACGT且当前后缀状态为自动机第i的结点的字符串最多的数 ...