欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java 基础,java

来源: javaer 分享于  点击 6350 次 点评:96

java 基础,java


JDK、JRE、JVM区别与联系

JDK:Java Development ToolKit(Java开发工具包),JDK是整个java开发的核心,它包括Java的运行环境(JRE)、JAVA基础的类库(Java API)和JAVA工具(Javac),有三种版本:J2SE,J2EE,J2ME.
                                            
JRE:Java Runtime Environment(Java运行环境),是运行JAVA程序所必须的环境集合(包括JVM标准实现+Java核心类库),即Java平台,所有的java程序必须都要在JRE中运行(运行一个java程序必不可少的成分),它不包括开发工具(编译器,调试器等)

JVM:Java Virtual Mechinal(Java虚拟机),是JRE的一部分,是一个虚拟出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM的主要工作是解释自己的指令集(即字节码)并映射到本地的CUP的指令集或OS的系统调用。java语言是跨平台运行的,之所以能跨平台就是因为有JVM,实现的机制就是使用了不同的JVM映射规则,让其与操作系统无关。总之一句话:Java语言使用JVM屏蔽了与具体平台相关的信息,是的java语言编译程序只需生成在JVM上运行的目标代码(字节码),就可以在多种平台上不加修改就可运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。即实现了“一次编译,到处运行”

三者联系:利用JDK开发属于我们的java程序(.java文件),通过JDK中的编译器(javac)将JAVA文件编译成java字节码(.class文件),在JRE上运行这些字节码,JVM解析这些字节码,映射到CUP指令集或OS的系统调用

数据类型

数据类型
    字节数已标出
     

拆装箱
在java中,一切都以对象为基础,但是基本数据类型不是对象,如果要以对象的方式使用这8中基本数据类型,可以将他们转换成对象的包装类型。java5以前,要想将一个int型的值装换成对应的包装类型Integer,必须显示的使用new 创建一个新的Integer对象,或调用静态方法Integer.valueOf()

Integer i = new Integer(1);
或
Integer i= Integer.valueOf(1);

自java5 及以后,增加了自动装箱和自动拆箱机制,方便了基本类型与包装类型的相互转换工作,就不用程序员手动的转换,程序自动就完成了转换,直接赋值即可:

Integer i= 1;

装箱:基本类型   转换为    引用类型
拆箱:引用类型   转换为   基本类型

判空
在java中要使用一个变量前,必先先对声明和赋值,所以我认为在java中不存在判空的情况。但是以以前的经验来说:

  • 基本类型判空:如int类型,用0来判空
  • 引用类型判空:用null来判空
    此问题还在研究中。。。
关键字

final

this—super
这两个关键字用在java的继承中
this:指该方法调用的对象,即该方法属于的那个对象
super:在子类中指基类对象
                                            
举例说明:

class Father{
    Father(int n){
        System.out.println("This is father " + n + "岁");
    }   
}
class Child extends Father {
    private int n;
    Child(int n){
        super(40);
        this.n = n;
        System.out.println("This is child " + n + "岁");
    }
}
class TestSuper {
    public static void main(String arg[]){
        Child child1 = new Child(18);
    }
}

运行结果为:

This is father 40 岁
This is father 18

总结出的规律:

  • 子类的构造过程必须先调用基类的构造方法
  • 子类使用super()调用基类的构造方法,且必须写在子类构造方法的的第一行
  • 如果子类没有显示调用super(),会默认调用基类不带参数的构造方法,如果基类中没有无参的构造方法,程序就会报错
访问控制

类成员
如何在类成员前面加上以下4个访问修饰符,其它对象对该类成员访问权限如下:

修饰符 类内部 同一个包 子类 任何地方
private Y N N N
default Y Y N N
protected Y Y Y N
public Y Y Y Y


类只能用public和default修饰

  • public类:可在任意地方被访问
  • default类:只能被同一包内部的类访问

。。。

switch—case

int i=2;
int n =2;
switch (i){
    case 1:System.out.println(1);break;
    case 'n':System.out.println(n);break;
    default:System.out.println("没有");break;
}

运行结果:没有,所以n变量是没有识别的
如果直接写:case n:System.out.println(n);break;编译时会报错

```
int i=2;
final int n =2;   //用final修饰
switch (i){
    case 1:System.out.println(1);break;
    case n:System.out.println(n);break;//常量
    default:System.out.println("没有");break;
}

运行结果:2

public static void main(String arg[]){
    int i=2;
    int n =2;
    switch (i){
        case 1: System.out.println(2);break;    //常量值
        case 'n': System.out.println(n);break;  //变量
        case 'num()': System.out.println(n);break; //表达式
        default:System.out.println("没有");break;
    }
}
public int  num(){
    int m=2;
    return m;
}

运行结果:case 'num()': System.out.println(n);break;编译时这句会报错

综上所看:

  • switch (A): A只能是int型,或是可以转换成int型的表达式,如byte,short,char型
  • case B: B可以是常量,或用单引号引起来的变量

相关文章

    暂无相关文章
相关栏目:

用户点评