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环境下编译和运行。请将程序编译、运行的结果截图,填入下框中。

java生产环境里的代码 可以直接拷贝过来用吗 java代码在其他设备上运行_JAVA

java生产环境里的代码 可以直接拷贝过来用吗 java代码在其他设备上运行_java_02

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

 

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生产环境里的代码 可以直接拷贝过来用吗 java代码在其他设备上运行_环境变量_03

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等。

java生产环境里的代码 可以直接拷贝过来用吗 java代码在其他设备上运行_JAVA_04

整数型:
具体区别如图:

java生产环境里的代码 可以直接拷贝过来用吗 java代码在其他设备上运行_运维_05

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

java生产环境里的代码 可以直接拷贝过来用吗 java代码在其他设备上运行_环境变量_06

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

 

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

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

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

 

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

java生产环境里的代码 可以直接拷贝过来用吗 java代码在其他设备上运行_java_07

java生产环境里的代码 可以直接拷贝过来用吗 java代码在其他设备上运行_运维_08

 

 

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

 

java生产环境里的代码 可以直接拷贝过来用吗 java代码在其他设备上运行_环境变量_09

注意;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.01       ,        0.05       ));      
      
              System.out.println(ArithUtil.sub(       1.0       ,        0.42       ));      
      
              System.out.println(ArithUtil.mul(       4.015       ,        100       ));      
      
              System.out.println(ArithUtil.div(       123.3       ,        100       ));      
      
              }      
      
       }      
      

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