JAVA 基础问题 JDK JRE JVM 运行时数据区 instanceof

[b][color=green]1.解释JDK,以及JDK主要包含的内容[/color] [/b]
JDK-Java Development Kit JAVA开发工具包,主要为JAVA应用程序提供了基本的开发和运行环境。
JDK 主要包含:
jre--JAVA运行环境
lib--JDK 类库:最基础的JAVA类以及各种实用类。java.lang,java.io,java.util,java.sql等包中的类都位于JDK类库中.
bin开发工具:都是可执行程序 例如 javac.exe 编译工具,java.exe运行工具,javadoc.exe 生成JavaDoc文档的工具,jar.exe 打包工具

[b][color=green]2.JDK 和 JRE ,JVM的区别[/color][/b]
JDK,java开发工具包,如上解释.
JVM,JAVA虚拟机,是整个JAVA实现跨平台的最核心的部分,所有的JAVA源程序需要经过编译成为 .class的字节码文件,JVM加载字节码文件执行JAVA程序.本地操作系统不会直接执行.class文件,jvm与操作系统进行交互,将程序解释给本地操作系统.
一次编译,到处运行!
JRE,java运行时环境 java runtime environment.只有JVM还不能完全执行class文件,在解释.class文件时JVM需要调用解释所需要的类库lib. jre目录下的bin和lib两个文件夹.bin目录中的就是jvm,lib中就是jvm工作所需要的类库.jvm和lib一起就可以认为是jre.jre里有运行.class的java.exe.

[b][color=green]3.J2SE,J2EE,J2ME概念的区别[/color] [/b]
三者是JAVA针对不同的使用来提供不同的服务,也就是提供不同类型的类库。
针对普通PC应用的J2SE java 2 standard edition,JAVA SE
针对企业级应用的J2EE java 2 enterprise edition,JAVA EE
针对嵌入式设备以及消费类电器的J2ME java 2 micro edition

对于初学者 都是从JAVA EE 即J2SE开始学习.
J2EE 是在J2SE的基础上添加了一系列的企业级应用编程接口,J2EE中包含有很多的几乎是,比如 JDBC, JNDI, EJB, RMI, JSP, Servlet, XML, JMS, Java IDL, JTS, JTA, JavaMail 和 JAF

[b][color=green]4.举例说明JDK中提供的JAVA基本包[/color] [/b]
java.lang包-包含Thread线程类,Exception异常类,系统类System,整数类Integer,字符串类String 此包自动导入
java.awt包 -抽象窗口工具箱包,Abstract Window Toolkit,用于构建GUI界面的类及绘图类
java.io,输入输出流,文件操作,IO流处理等的一些类
java.util,实用类工具包 日期类Date,集合框架接口,实现类与工具类等等
java.net,TCP/IP网络协议,Socket类及与URL相关的类,主要用于网络编程
java.sql,数据库编程的接口与类的包
java.rmi,编写网络程序的包 Remote Method Invocation
还有类似于
javax.* 扩展包 ,是对一些基本包的扩展 例如 javax.sql,javax.swing,以及编写声音的javax.sound包等等.

[b][color=green]5.JAVA 包的作用以及命名规范[/color][/b]
作用:
1)区分名字相同的类
2)可以对访问权限进行控制 例如使用访问修饰符,不同包的类互相访问时有权限约束
3)有助于划分和组织JAVA应用中的各个类
例如 GuoGuoDao公司开发了一个BookStore网站系统,在这个系统中一部分类位于客户端界面处理,一部分位于服务器端业务逻辑处理,还有其它公共类工具类.
com.guoguodao.bookstore.client-包中的类用于构建客户端界面
com.guoguodao.bookstore.server-包中的类用于处理业务逻辑
com.guoguodao.bookstore.common-包中类是一些实用工具类

对于位于服务器端的类,有一部分用户处理用户订单,一部分管理库存,一部分管理用户信息等
com.guoguodao.bookstore.server.order --订单
com.guoguodao.bookstore.server.store --库存
com.guoguodao.bookstore.server.customer --用户信息
规范:
包名小写,一般包能够包含 类的创建者拥有者的信息,软件项目的信息,类在具体软件项目中所处的位置
例如有一个类名为MyClientInfo类的完整类名为 com.guoguodao.bookstore.normal.MyClientInfo
MyClientInfo类由GuoGuoDao公司开发,属于bookstore项目,位于bookstore项目的normal包中

[b][color=green]6.简单介绍JAVA虚拟机运行时数据区[/color][/b]
JVM 是由JDK提供的一个软件程序,主要作用是执行JAVA程序。
1)加载经过编译后.class文件的二进制数据到内存
2)对类的二进制数据进行验证
3)解析并执行
JVM提供了程序运行时环境,其中一个重要的资源就是运行时数据区,它是操作系统为JAVA 虚拟机进程分配的内存区域,受JVM管理。
运行时数据区又可以分为 堆区,方法区,JAVA栈区。
堆区主要存放对象
方法区中存放的是类的类型信息--静态变量和方法信息,方法信息中包含这所有方法的字节码。


[b][color=green]7.java 标识符有哪些命名规则 [/color][/b]
1)以字母 数字 下划线和$符号组成
2)不能以数字开头
3)不能是JAVA中的关键字
4)类名首字母大小 属性和方法名称首字母小写
5)常量大写

[b][color=green]8.分哪两种数据类型,并列出两种数据类型所包括的具体类型[/color][/b]
1)分为基本数据类型 和引用数据类型
2)基本数据类型包括: int,float,double,boolean,char,byte,short,long;
3)引用数据类型包括: 类,数组和接口

[color=green][b]9.JAVA 中的类型转换[/b][/color]
JAVA 的类型转换和以前所学的C语言类型转换道理一样,一种数据类型可以转换为另一种数据类型。用户必须谨慎使用此功能,因为误用可能会导致数据丢失。
类型转换有两种:自动类型转换和强制类型转换

自动类型转换
将一种类型的变量赋给另一种类型的变量时,就会发生自动类型转换。
前提条件:
两种类型必须兼容,数值类型 int float 等.
目标类型大于源类型。
找错:
 public class Test{

public static void main(String args[]){

//自动类型转换

int i =10;

float j=5;

i=j;

System.out.println(" i: "+i);

}

}
//i=j possible loss of precision 可能会引起精度丢失


int long double float 可互相兼容,但是也要满足目标类型大于源类型的规则。

注意:在C语言中char 和int 类型是可以互相兼容的。

但是在JAVA中,只能由char 类型的变量赋值给int 类型,但是int 类型的变量是不允许赋值给char 类型的。

char 和boolean 不兼容,所以无法实现类型转换。
找错:

public class Test{

public static void main(String args[]){
//自动类型转换和兼容性
int i =10;
char c = 'a';
c=i;
System.out.println(" c: "+c);
}
//c=i; 一个数值类型的变量i 的值是不允许赋值给char类型的变量的
}


但是这样写是没有问题的:

public class Test{

public static void main(String args[]){
//自动类型转换和兼容性
int i =10;
char c = 'a';
i='A';
System.out.println(" i: "+i);
i=c;
System.out.println(" i: "+i);
}
}


所以:char 类型的值本身还是ASCII码值。

强制类型转换

自动类型转换并非在所有情况下都有效,在必须将float 值赋给int 值时,这种类型转换不会执行,因为int 类型的数据宽度小于float 类型,所以要显式的进行强制类型转换。

了解类型提升规则
JAVA 具有应用于表达式的多个提升规则:
所有byte 型和short 型都可提升为int 型。
如果一个操作数为long 型,则整个表达式提升为long 型。
如果一个操作数为float型,则整个表达式提升为float 型。
如果一个操作数为double 型,则整个表达式提升为double 型。

找错:

public class Test{
public static void main(String args[]){
//强制类型转换
int i =10;
float j =9;
i = 1+j;
System.out.println(" i: "+i);
}
}

// i =1+j; j是float 类型,只要j参与运算,整个表达式的值将提升为float 类型

// 所以在计算前需要(int)j



[color=green][b]10.JAVA 数组[/b][/color]

数组是一个变量,相同数据类型的数据,连续内存地址存放。
可以通过指定数组的名称和大小来声明数组,一旦声明数组的大小,就不能再修改。

数组中的数据可以是原始数据类型,也可以是一个对象。

与变量一样,在创建数组时可以对该数组赋值。如果初始化没有为数组赋值,JAVA将根据数据类型为所有数组元素赋给一个默认值。

创建数组的三种方式
仅声明:char ch [] ;
声明和创建:char ch [] = new char [10];//使用关键字new 声明并未数组元素分配内存
声明创建和初始化:char ch[] = {‘A‘,’B’,’C’};
String str [] ={"Simonlv","Simba","Ben","David"};

命令行参数
JAVA 程序在执行过程中,信息可以传递至main() 方法。

public class Test{

public static void main(String args[]){
//演示传递命令行参数
System.out.println("传递命令行参数:");

for(int i=0;i<args.length;i++){
System.out.println(args[i]);
}
}
}



[color=green][b]11.instanceof 关键字[/b][/color]

A instanceof B,可用来判断A是不是B这一类型的关键字。

例如: Fee父类,费用类. WaterFee 水费 ,GasFee 燃气费 继承父类 Fee

 public class Instance {

public void uphandFee(Fee fee){
if(fee instanceof WaterFee){
System.out.println("交水费!");
}

if(fee instanceof GasFee){
System.out.println("交煤气费!");
}
}

public static void main(String[] args) {
Fee waterFee = new WaterFee();
Fee gasFee = new GasFee();

new Instance().uphandFee(gasFee);
new Instance().uphandFee(waterFee);
}
}


但最好不要使用这样的方法,既然已经存在多态,利用一种类型,多种形态,使用重写的方法,根据引用不同来调用更加轻松一些,且更具有面向对象的特色.
public class Instance {

public void uphandFee(Fee fee){
fee.showFee();//子父类中都存在的方法 子类方法也重写了父类的方法 各自流程实现不一样即可
}

public static void main(String[] args) {
Fee waterFee = new WaterFee();
Fee gasFee = new GasFee();

new Instance().uphandFee(gasFee);
new Instance().uphandFee(waterFee);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java JDKJava Development Kit)是Java开发工具包,包含了Java编译器、Java运行时环境、Java API文档等工具。 Java JREJava Runtime Environment)是Java运行时环境,包含了Java虚拟机(JVM)和Java类库等组件,用于运行Java程序。 Java JVMJava Virtual Machine)是Java虚拟机,是Java程序运行的核心组件,负责将Java字节码转换为机器码并执行。 因此,JDK包含了JREJVMJRE包含了JVM,而JVMJava程序运行的核心组件。 ### 回答2: Java是一种面向对象的编程语言,具有跨平台的特性,它需要安装Java平台环境来运行。Java平台环境指的是Java Development Kit(JDK)、Java Runtime Environment(JRE)和Java Virtual Machine(JVM)三个组成部分。 JDKJava开发包,它包含了开发Java程序所需的所有工具,如编译器、调试器、Java API等,是Java开发的核心组件。JDK还提供了一些开发工具,如JavaDoc,可以根据源代码生成API文档,方便开发人员查看和了解Java API。 JREJava运行环境,它包含了JVMJava类库等运行Java程序所需的组件。JREJava程序的运行环境,它使Java程序可以在各种操作系统上运行。安装了JRE后,用户可以直接执行Java程序,而无需再进行任何配置。 JVMJava虚拟机,它是Java运行环境的核心,负责解释执行Java程序。JVM是在计算机上模拟一个独立的运行环境,它将Java程序转换成计算机能够理解的字节码,在运行时将字节码翻译成机器码,执行程序。JVM还负责Java程序的内存管理和垃圾回收等操作。 可以看到,JDKJava程序开发的核心组件,JRE是程序运行的环境,JVM是程序的执行引擎。三者是相互依存的关系,JDK需要JRE才能运行Java程序,JRE需要JVM才能解释执行Java程序。因此,安装JDK时,JVMJRE也会一并安装。而只安装JRE时,也会自动安装JVM。 总之,JDKJREJVM三者是密不可分的,组成了Java平台环境,可以使Java程序具备跨平台运行的能力。 ### 回答3: Java是一种流行的编程语言,广泛用于开发各种不同类用程序。Java开发环境包括Java Development Kit(JDK)、Java Runtime Environment(JRE)和Java虚拟机(JVM),它们之间有着密切的关系。 Java JDKJava开发工具包)是Java开发人员必须具备的工具,包含Java开发所需的所有工具,包括Java编译器、运行时环境、调试器、类库等。JDK还包含了Java实现的API,开发人员可以利用这些API来编写代码。 Java JREJava运行时环境)是用户计算机上执行Java程序所必需的环境,它包括Java虚拟机和Java类库。Java程序必须在JRE下运行,它提供Java程序所需的所有运行时环境和资源。 Java虚拟机(JVM)是Java用程序的虚拟机,它是Java平台的核心组件。JVM是一台模拟计算机,可以在它上面运行Java字节码,它能够将Java字节码解释成机器语言或转化成本地代码运行。 总的来说,JDK用于开发Java程序的工具包,JRE用于运行Java程序的运行时环境,而JVMJava程序的虚拟机,它可以在任何安装了JRE的机器上运行Java程序。因此,开发人员需要安装JDK来编写和编译Java代码,而用户需要安装JRE来启动Java用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值