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 );

}

}

运行结果:

时间: 2024-10-06 20:20:31

Java语言基础相关问题的相关文章

day05<Java语言基础--数组>

Java语言基础(数组概述和定义格式说明) Java语言基础(数组的初始化动态初始化) Java语言基础(Java中的内存分配以及栈和堆的区别) Java语言基础(数组的内存图解1一个数组) Java语言基础(数组的内存图解2二个数组) Java语言基础(数组的内存图解3三个引用两个数组) Java语言基础(数组的初始化静态初始化及内存图) Java语言基础(数组操作的两个常见小问题越界和空指针 Java语言基础(数组的操作1遍历) Java语言基础(数组的操作2获取最值) Java语言基础(数

2018.6.13 Java语言基础复习总结

Java语言基础与面向对象编程实践 第一章 初识Java 1.1机器语言 机器语言是指一台计算机全部的指令集合.机器语言室友0和1组成的二进制数,是一串串由0和1组成的指令序列,可将这些指令序列交给计算机执行. 1.2汇编语言 负责把汇编语言翻译成二进制的机器语言,这种翻译程序就是汇编程序. 1.3高级语言 1954年第一个完全脱离机器硬件的高级语言FORTRAN诞生 1.3.1C语言 是一种计算机程序设计语言,它既有高级语言的特点,又具有汇编语言的特点. 1.3.2 C++语言 是具有面向对象

简单的入门Android开发和Java语言基础[图]

简单的入门Android开发和Java语言基础[图]前言:去年年底到今年年初,我做过简单的智能家居,也实现过一些简单的直连和远程的智能家居.于是就将最简单的通信发布出来:智能家居简单实现-使用ESP8266简单实现和APP通讯由于这方面的资料少之又少,所以阅读量飙升的很快.也有很多人加了好友问我问题.通过问题我发现,很多都是学硬件的.或是做智能家居方面的学生,基本都不会 Android 开发的.问也有很多问我怎么学 Android 开发的.很多的人认知还是停留在学习这种软件开发技术需要去培训机构

第二十五节:Java语言基础-面向对象基础

面向对象 面向过程的代表主要是C语言,面向对象是相对面向过程而言,Java是面向对象的编程语言,面向过程是通过函数体现,面向过程主要是功能行为. 而对于面向对象而言,将功能封装到对象,所以面向对象是基于面向过程的.以前是主要以面向过程为思想,现在是将功能装进对象中,如果要用到功能时,就调用该对象即可. 面向对象是入门思想的进步,适用于人类的思考,将复杂的东西进行了简单化,将我们程序员从执行者变化成指挥者.由以前面向功能(面向过程)转变为面向对象(封装的功能). **** 面向对象设计思想 设计思

Java学习总结(二)----Java语言基础

1.     Java语言基础 2.1 关键字 定义:被java语言赋予特殊含义的单词 特点:关键字中的字母都为小写 用于定义数据类型的关键字 class,interface,byte,short,int, long ,float,double,char,boolean,void 用于定义数据类型值的关键字 true,false,null 用于定义流程控制的关键字 If,else,switch,case,default, while,do,for,break,continue,return 用于

java--学习java从这里开始:Java语言基础(1)《基础知识篇》--黑马程序员

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- Java语言基础(1) 从这篇日记开始说一些关于java的语言基础知识, 1  Java语言概述 java的创始人——詹姆斯·高斯林(James Gosling) 1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位,毕业后到IBM工作,设计IBM第7一代工作站NeWS系统,但不受重视.后来转至Sun公司,1990年,与Patrick,Na

非专业码农 JAVA学习笔记 2 java语言基础

java语言基础 (一)程序构成 略 (二)数据类型变量和常量 1.数据类型(与c#差不多) 布尔bool 8位 字节byte 8   -128-127 字符char 16 短整型Short 16 Int 32 Long 64 Float 32 Double 64 2.标识符-变量常量方法对象和类的名字标记 字母数字 还有两个特殊符号_ 和$ 字母下划线或者美元符号开头 3.常量 4.变量 (三)表达式 1.赋值和强制类型转换 Tostring()弱转换 类型=(类型)变量:a=(int)b;a

[JAVA_开课吧资源]第一周 Java语言概述、Java语言基础

主题一 Java语言概述 » JDK介绍及其基本组件 Sun公司利用Java开发工具箱(Java Development Toolkit ,JDK)发布Java的各个版本.JDK由开发和测试Java程序的独立程序集组成,它们都从命令行调用. [请点击查看更多内容 转自51CTO.com] » 使用CMD开发运行Java程序 代码文件的拓展名必须为.java,并且文件名应该与类的类名完全相同.编译一个程序是指使用编译器将源代码翻译成java字节码.下面的命令用来编译源代码文件welcome.jav

第二章 java语言基础

2.1 java语言基础组成 关键字 标识符 注释 常量和变量 运算符 语句 函数 数组 2.1.1 标识符 1. 组成:由英文字母.数字._和$ 2. 规则: 不能以数字开头 不能使用关键字 3. java的命名规范 包名:所有字母都小写.xxyyy 类名:所有单词的首字母大写.XxxYy 变量名和函数名:第一个单词首字母小写,之后的每个单词首字母都大写.xxYyyZz 常量名:所有字母都大写,多个单词用下划线连接.XXX_YY 2.1.2 常量和变量 1. 常量:不能改变的数值 分类: 整数