初识Java


初始Java

JDK、JRE和JVM

Java的源文件名和类名必须保持一致,并且类名一定要大写
类名的访问修饰符一般是大写.
1、javac命令把java源文件编译成.class文件(字节码文件),这个期间叫做编译期间
有可能引发编译错误,导致不能生成class文件,就是我们常见的爆红

2、java命令运行这个.class文件,输出运行结果,这个期间叫做运行期间
有可能引发运行错误

JVM:Java运行虚拟机
用于执行字节码文件的虚拟计算机,是Java实现跨平台的最核心的部分.
JRE:Java运行所需的环境
包含了Java虚拟机、库函数、运行Java应用程序所必须的文件、只能运行class而没有编译的功能。

JDK:包含了Java开发、运行、编译的环境和类库,以及源码包
bin/存放了二进制文件的目录,最主要的是编译器,最主要的是编译器(javac.exe)
include/Java和JVM交互用的头文件
lib/存放类库文件
JRE/Java运行环境

JDK包含了JRE,JRE包含了JVM

参考:JDK、JRE和JVM的作用以及关系

//第一种注释方法:行注释

/*
第二种注释方法:多行注释
 */

/**
 * 第三种注释方法:文本注释
 */
public class Code01 {

    //Java的程序主入口是从main方法开始运行的
    public static void main(String[] args) {
    //Java是一种强类型语言、定义变量时,必须声明其变量类型
  } 
}

Java数据类型

数据类型分为基本数据类型和引用类型

基本数据类型:四种八个
整数类型:byte(1个字节)包装类:Byte short(2个字节)包装类:Short int(4个字节)整数默认包装类:Integer long(8个字节)包装类:Long
浮点类型:float(单精度:4个字节)包装类:Float double(双精度:8个字节)浮点数默认 包装类:Double
布尔类型:boolean包装类:Boolean
字符类型:char(两个字节)包装类:Character

引用类型:
类、接口、数组、枚举、注解

基本数据类型:
byte a=4;   //定义的值不能超过-128——127这个范围:否则报错
short b=5;  //定义的值不能超过:-32768——32767,否则报错
int c=6;    //定义范围同上
long d=7L;  //定义范围同上 定义long类,必须加L,否则默认int类型。
System.out.println(a);  //4
System.out.println(b);  //5
System.out.println(c);  //6
System.out.println(d);  //7
System.out.println("byte的大小:"+Byte.SIZE+",byte的数据范围:"+Byte.MIN_VALUE+","+Byte.MAX_VALUE);
//byte的大小:8,byte的数据范围:-128,127
System.out.println("short的大小:"+Short.SIZE+",short的数据范围:"+Short.MIN_VALUE+","+Short.MAX_VALUE);
//short的大小:16,short的数据范围:-32768,32767
System.out.println("int的大小:"+Integer.SIZE+",int的数据范围:"+Integer.MIN_VALUE+","+Integer.MAX_VALUE);
//int的大小:32,int的数据范围:-2147483648,2147483647
System.out.println("long的大小:"+Long.SIZE+",long的数据范围:"+Long.MIN_VALUE+","+Long.MAX_VALUE);
//long的大小:64,long的数据范围:-9223372036854775808,9223372036854775807

float e=1.12f;  //定义范围同上 不加f报错
double f=1.25;  //定义范围同上
System.out.println("float的大小:"+Float.SIZE+",float的数据范围:"+Float.MIN_VALUE+","+Float.MAX_VALUE);
//float的大小:32,float的数据范围:1.4E-45,3.4028235E38
System.out.println("double的大小:"+Double.SIZE+",double的数据范围:"+Double.MIN_VALUE+","+Double.MAX_VALUE);
//double的大小:64,double的数据范围:4.9E-324,1.7976931348623157E308

boolean g=true;    //boolean类型只有true和false两个值,也没有上面的范围的方法
System.out.println(g);  //true
char k='a';     //char只能定义单个字符
System.out.println("char的大小:"+Character.SIZE);      //char/*


数据类型转换
/*
基本数据类型的转换
    byte——>short——>int——>long——>float——>double
    低位——————————————————————————————————>高位
    低位向高位类型转换,直接转换

    低位<——————————————————————————————————高位
    高位向低位类型转换,需要强制转换
 */
public class Code03 {

    public static void main(String[] args) {
        //直接转换
        byte a=10;
        int b=a;
        System.out.println(b);      //10

        int c=10;
        double d=c;
        System.out.println(d);      //10.0

        //强制转换
        int d1=15;
        byte a1= (byte) d1;
        System.out.println(a1);     //15

        int f3=128;
        byte b1= (byte) f3;
        System.out.println(b1);     //-128 溢出 byte=[-128,127]


        //char类型可以和int类型相互转换
        //char类型a表示的是ASCII码值int类型,a-z 97-123 A-Z 65-91
        char c1='a';
        int c2=c1;
        System.out.println(c2);     //97

        int k1=65;
        char k2= (char) k1;
        System.out.println(k2);     //A
    }
}

实例—类变量
public class Code08 {

    int a;  //实例变量(非静态变量)
    static int b;   //类变量(静态变量)


    public void display(){
        System.out.println(a);    //0   实例方法可以直接使用实例变量
        System.out.println(b);    //0   实例方法可以直接使用静态变量
    }

    public static void play(){
        Code05 code05 = new Code05();
        System.out.println(code05.a);   //0   类方法中使用实例变量,必须通过类对象调用实例变量
        System.out.println(b);  //0  类方法中可以使用类变量
    }

    public static void main(String[] args) {
        Code05 code05 = new Code05();
        code05.display();      //因为main方法为静态方法所有调用非static修饰的方法必须通过对象调用
        play();     //因为main方法为静态方法调用static修饰的方法可以直接调用
        
        //static int a; 局部方法中不能使用static修饰变量
    }
}
全局-局部变量:
全局变量:整数类型默认为0 浮点数类型默认0.0 char默认空 boolean类型默认值为false
局部变量:使用前必须赋值
public class Code06 {
    byte a;
    short b;
    int c;
    long d;
    float e;
    double f;
    char g;
    boolean h;

    public void display(){
        System.out.println(a);      //0
        System.out.println(b);      //0
        System.out.println(c);      //0
        System.out.println(d);      //0
        System.out.println(e);      //0.0
        System.out.println(f);      //0.0
        System.out.println(g);      //
        System.out.println(h);      //false
    }

    public static void main(String[] args) {
        new Code06().display();

        System.out.println("=========================================");
        int a;  //局部变量没有默认值
        //System.out.println(a);  //Error:(29, 28) java: 可能尚未初始化变量a     使用前必须赋值

        a=10;
        System.out.println(a);  //10

    }
}
类方法-实例方法


/*
Java中的方法分为:实例方法(非静态方法:无static修饰)和类方法(静态方法:static修饰)

类方法(静态方法)不能够直接使用实例变量(非静态变量),必须通过创建对象调用实例变量(非静态变量)
实例方法(非静态方法:无static修饰):可以直接使用实例变量(非静态变量:无static修饰的变量)和类变量(静态变量)
静态变量叫做类变量,只能定义在类中,不能在局部方法中声明,局部变量不能是static.

 */
public class Code07 {
    int a;  //实例变量(非静态变量)
    static int b;   //类变量(静态变量)

    //没有用static修饰的方法,实例方法,也叫非静态方法
    public void display(){
        System.out.println(a);    //0   实例方法可以直接使用实例变量

        System.out.println(b);    //0   实例方法可以直接使用静态变量
    }

    public static void play(){
        Code05 code05 = new Code05();
        System.out.println(code05.a);   //0   类方法中使用实例变量,必须通过类对象调用实例变量

        System.out.println(b);  //0  类方法中可以使用类变量
    }

    public static void main(String[] args) {
        Code05 code05 = new Code05();
        code05.display();      //因为main方法为静态方法所有调用非static修饰的方法必须通过对象调用
        play();     //因为main方法为静态方法调用static修饰的方法可以直接调用
    }
}