`

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

阅读更多
1.解释JDK,以及JDK主要包含的内容  
   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 打包工具

2.JDK 和 JRE ,JVM的区别
   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.

3.J2SE,J2EE,J2ME概念的区别 
  三者是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
  
4.举例说明JDK中提供的JAVA基本包 
  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包等等.

5.JAVA 包的作用以及命名规范
  作用:
  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包中

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

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

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

9.JAVA 中的类型转换
  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 



10.JAVA 数组

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

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

与变量一样,在创建数组时可以对该数组赋值。如果初始化没有为数组赋值,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]);
                   }
         }
     }



11.instanceof 关键字
  
   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);
	}
}
分享到:
评论

相关推荐

    Java 开发工具 JDK 17

    JDK 17 是其一个重要的版本,它包含了Java编译器(javac)、Java运行时环境(JRE)、Java调试工具(JDB)、Java文档生成器(Javadoc)以及其他开发工具,如jar工具和appletviewer等。这个版本的发布,旨在提供更稳定...

    最新Java JDK 20安装版(macos-64位)

    - **JRE(Java Runtime Environment)**:Java运行时环境,包含了执行Java应用程序所需的Java虚拟机(JVM)和库。 - **Java编译器(javac)**:将源代码编译成可执行的字节码。 - **Java文档生成器(javadoc)**...

    jdk-17.0.8.zip(windows免安装版本)

    JDK包含了Java运行环境(Java Runtime Environment,JRE)、Java编译器(javac)、Java文档生成器(javadoc)、Java调试器(jdb)以及其他工具,为开发者提供了完整的开发和调试环境。 在JDK 17.0.8中,我们可能会...

    JDK-11.0.11

    1. **Java Runtime Environment (JRE)**:JRE是JDK的基础,提供了运行Java程序所需的环境。它包括Java虚拟机(JVM)、类库以及支持Java程序运行所需的其他文件。JVM是Java程序执行的引擎,负责解释和执行字节码。 2...

    JDK Development Kit 17.0.7 downloads - macOS - x64 DMG Installer

    解压这个文件后,用户可以找到JDK的所有组件,包括Java运行时环境(JRE)、Java编译器(javac)、Java虚拟机(JVM)以及其他开发工具。 **安装和配置** 1. 首先,用户需要使用`tar -zxvf jdk-17_macos-x64_bin.tar...

    jdk-15.0.1_windows-x64_bin.zip

    JDK是Java编程的基础,它包含了一套完整的Java编译器、Java运行时环境以及各种工具,使得开发者能够在本地环境中编写、测试和部署Java应用。 首先,让我们详细了解一下JDK的主要组成部分: 1. **Java编译器**...

    JDK17-Linux-Arm64

    JDK是Java编程语言的核心工具集,它提供了编译、调试和运行Java应用程序所需的所有组件。在Linux Arm64平台上,JDK17为开发人员提供了在64位ARM处理器上构建和执行Java应用的能力,这在如今的服务器硬件和嵌入式设备...

    jdk14

    JRE是Java运行环境,包含Java虚拟机(JVM)、Java核心类库和其他运行Java程序所需的组件。JDK除了包含JRE之外,还提供了编译器javac、反编译器jdb、性能分析工具jconsole等,供开发者进行程序开发、调试和性能监控。...

    jdk14.zip,java开发

    JDK是Java开发工具集,包含了Java运行环境(JRE)、编译器(javac)、Java文档生成器(javadoc)以及其他必要的工具,使开发者能够创建、测试和部署Java应用程序。 JDK14的显著特点包括: 1. **Records(记录类)*...

    jdk-14.0.1_windows-x64_bin.zip

    这个版本的JDK是由Oracle公司发布的,包含了Java运行环境(JRE)以及开发工具,如Java编译器(javac)、Java虚拟机(JVM)、Java文档生成工具(javadoc)等。 JDK的重要性在于它是Java开发的基础。`javac`命令用于...

    jdk-15.0.2_windows-x64_bin .zip

    3. **Java运行时环境**(JRE):包含Java类库和JVM,是运行Java程序的必要条件。 4. **Java文档生成器**(javadoc):生成API文档,帮助开发者理解代码结构。 5. **Java调试工具**(jdb):用于调试Java程序,查找和...

    jdk1.7和14的版本

    JRE是运行Java应用程序所必需的基础环境,它包含了Java虚拟机(JVM)、类库以及运行Java程序所需的其他组件。在JDK中,JRE是开发人员用于测试和部署应用程序的核心部分。JRE不包含开发工具,如编译器和调试器,因此...

    java-jdk14jar包下载

    JDK是Java程序员的必备工具,包含了编译器、调试器、Java运行时环境(JRE)以及一系列用于Java开发的实用工具。在本篇文章中,我们将深入探讨JDK 14中的新特性和改进,以及如何下载和配置它。 **新特性与改进** 1....

    jdk-17.0.2_windows-x64_bin.exe

    它包括了Java编译器(javac)、Java虚拟机(JVM)、Java运行时环境(JRE)、以及各种用于开发和诊断的工具。 JDK 17.0.2是Java的一个重要更新,它可能包含性能优化、安全修复、新的API以及对现有功能的增强。每一代...

    jdk-16.0.1_windows-x64_bin.zip

    此外,JDK还包含Java运行时环境(JRE),这是运行Java应用程序的基础,它包含了JVM、Java核心类库和其他支持文件。 JDK 16.0.1 版本引入了一些新特性和改进,其中包括: 1. ** Records (JEP 395)**:Records 是一...

    Windows jdk 16 64 位 exe 安装包

    JDK是Java开发工具集的简称,它是Java编程语言的核心组成部分,包含了编译器、调试器、文档生成工具以及Java运行环境(JRE)。开发者使用JDK可以编写、编译、测试和部署Java应用程序。JDK 16是Oracle公司发布的Java ...

    Java JDK16,开发必备物品

    Java JDK16是Java开发的重要版本,它是Java Standard Edition(SE)的一部分,为开发者提供了运行和构建Java应用程序所需的编译器、JVM(Java虚拟机)以及各种工具。这个版本针对开发者进行了多项改进和增强,使得...

    jdk-16.0.2_windows-x64_bin.zip

    JDK是Java编程语言的核心组成部分,包含了开发和运行Java应用程序所需的所有工具和库。 首先,JDK的主要组成部分包括: 1. **Java编译器** (javac):将源代码(.java文件)转换为字节码(.class文件),这是Java...

    Java JDK17 API

    JDK,全称Java Development Kit,是Oracle公司提供的用于开发Java应用程序的软件包,包含了Java运行环境(JRE)、编译器(javac)、解释器(java)以及各种工具和库。JDK17作为长期支持(LTS)版本,其稳定性和安全...

Global site tag (gtag.js) - Google Analytics