作业0910

1.java为什么能跨平台运行?请简述原理。

因为它有虚拟机(JVM),JAVA程序不是直接在电脑上运行的,是在虚拟机上进行的,每个系统平台都是有自己的虚拟机(JVM),所以JAVA语言能跨平台。 
1, java代码不是直接运行在CPU上,而是运行在java虚机(简称JVM)上的。
2,java是先把java文件编译成二进制字节码的class文件,jvm就解释执行class文件
3,就是因为java是运行在jvm上的,所以它的代码就能不经修改,就能在不同平台的jvm上运行(在UNIX用UNIX的jvm,在linux上用linux的jvm,在windows上用windows的jvm)
假如用windows移植到UNIX,只需把java文件是UNIX的jvm上编译成class文件,然后用jvm运行就可以了



2.请尝试安装和配置JDK,并给出安装、配置JDK的步骤。

特别提示:jdk和eclipse保存的路径不能有中文字符

(1).打开我的电脑--属性--高级--环境变量

(2)新建系统变量JAVA_HOME

变量名:JAVA_HOME
变量值:jdk的目录,比如d:/java

(3)选择“系统变量”中变量名为“Path”的环境变量
双击该变量,把JDK安装路径中bin目录的绝对路径,添加到Path变量的值中,并使用半角的分号和已有的路径进行分隔。

变量名:Path
添加的变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

这是java的环境配置,配置完成后直接启动eclipse,它会自动完成java环境的配置

 

 

3.请问配置JDK时环境变量path和JAVA_HOME的作用是什么?

1、PATH环境变量。
作用是指定命令搜索路径,在i命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。
需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经可执行文件javac/java/javadoc等待,设置PATH变量后,就可以在任何目录下执行javac/java等工具了。
2、CLASSPATH环境变量。
作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH来寻找类的。
需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。
新版的软件,classpath没有什么用了,因为在安装的时候已经选了JDK而且可以添加。
3.JAVA_HOME
它指向jdk的安装目录Eclipse/Netbeans/Tomcat等软件就是通过JAVA_HOME来找到并使用安装好的jdk。


4.利用文本编辑器输入课堂上练习的Hello.java,并在JDK环境下编译和运行。请将程序编译、运行的结果截图,填入下框中。

一开始报错是因为在文本框了的;用的是中文下的,应该用英文下的;

 

5.如果第4题中在DOS命令下输入:java Hello出现以下结果:Bad command or the file name可能是什么原因?请说明理由。

1.没有输入javac指定路径,而是直接输入java Hello。

2.前面已经用过一次指令,没有重新输入路径。

 

6.如果第4题中在DOS命令下输入:java Hello出现以下结果:Exception in thread “main” java.lang.NoClassDefFoundError: Hello可能是什么原因?请说明理由。

没有定义Hello这个类名。

 

7.在第4题中Hello.class所在路径下,输入命令:java Hello.class,会出现什么结果,为什么?

java Hello已经是加载类了

8.请描述基本数据类型和引用数据类型的区别?

1.内存使用:基本数据类型直接存放在栈内存里。而引用类型则是,内容存放在堆内存,地址存放在栈内存,访问时通过栈内存的地址找到堆内存的内容。

2.变量赋值:基本数据类型是直接把值赋给变量。而引用类型是,把值的地址复制给新变量,通过地址再找到内容。

 

9.Java主要有那几种文件类型?各自的作用是什么?

 

java提供了两类数据类型:基本类型,引用类型。

1、基本类型包括:boolean ,byte,char,int,short,float,long,double,值得注意的是:在原始数据类型中,除了boolean类型所占长度与平台有关外,其他数据类型长度都是与平台无关的。比如,int永远占4个字节。
2、引用类型常见的有:String,StringBuffer,ArrayList,HashSet,HashMap等。


整数型:
具体区别如图:


int型应用最广泛
在堆long型赋值是结尾必须加上“L”为了与数字1区分建议用大写的L,
2.浮点型
2.1 float型:单精度浮点型,赋值是结尾加F,负责系统默认double型,


3字符型
char
单个字符,用单引号引起来,如int兼容,表示字符集中的位置。
转移字符\: \n 换行,\t制表符,\\反斜杠,\r回车,
布尔型;
boolean;只有ture和false两个值。

 

10.字符集相关知识请看上一篇

以下题目请在Eclipse环境下编译和运行。

1.编写一个Java程序,计算半径为3.0的圆周长和面积并输出结果。把圆周率π定义为常量,半径定义为变量,然后进行计算并输出结果。

 

标签:log   com   http   sp   src   java   c   bs   tp   

技术分享

技术分享

 

 

2.编写一个Java项目,定义包,在包下定义包含main方法的类,在main方法中声明8种基本数据类型的变量并赋值,练习数据类型转换。

 

注意;float虽然是4个自减,但是它的取值范围却比8个字节的long要大。

float和double只能用来作科学计算或者是工程计算,但在商业计算中我们要用java.math.BigDecimal,通过使用BigDecimal类可以解决上述问题,实例代码如下:

package ex;

 
import java.math.*;
 
public class BigDecimalDemo {
    public static void main(String[] args){
        System.out.println(ArithUtil.add(0.010.05));
        System.out.println(ArithUtil.sub(1.00.42));
        System.out.println(ArithUtil.mul(4.015100));
        System.out.println(ArithUtil.div(123.3100));
    }
}
 
class ArithUtil{
    private static final int DEF_DIV_SCALE=10;
     
    private ArithUtil(){}
    //相加
    public static double add(double d1,double d2){
        BigDecimal b1=new BigDecimal(Double.toString(d1));
        BigDecimal b2=new BigDecimal(Double.toString(d2));
        return b1.add(b2).doubleValue();
         
    }
    //相减
    public static double sub(double d1,double d2){
        BigDecimal b1=new BigDecimal(Double.toString(d1));
        BigDecimal b2=new BigDecimal(Double.toString(d2));
        return b1.subtract(b2).doubleValue();
         
    }
    //相乘
    public static double mul(double d1,double d2){
        BigDecimal b1=new BigDecimal(Double.toString(d1));
        BigDecimal b2=new BigDecimal(Double.toString(d2));
        return b1.multiply(b2).doubleValue();
         
    }
    //相除
    public static double div(double d1,double d2){
 
        return div(d1,d2,DEF_DIV_SCALE);
         
    }
     
    public static double div(double d1,double d2,int scale){
        if(scale<0){
            throw new IllegalArgumentException("The scale must be a positive integer or zero");
        }
        BigDecimal b1=new BigDecimal(Double.toString(d1));
        BigDecimal b2=new BigDecimal(Double.toString(d2));
        return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
         
    }
     
}

 

posted @ 2016-09-10 17:04  hanruyue  阅读(206)  评论(0编辑  收藏  举报