一、Java编译到运行

  对于一个.Java文件,在控制台使用javac 文件命.java指令对其进行编译生成一个字节码文件(实际上是一个二进制文件),在再通过java 文件名指令运行该Java文件。
  所有Java运行的文件都运行到了JVM(java virtual Machine当中)。在学习Java之前都会安装JDK(java development kit)即Java开发工具,在这款工具里包含了JRE(java runtime environment)即Java运行环境,其中又包括了JVM,这也是Java可以在全平台设备上运行的原因,因为它的运行都发生在java自己的虚拟机上。


二、main方法示例:

public class class_one_practice {

    public static void main(String[] args) {
        System.out.println("Hello,Java");
    }
    
}

  ①在一个Java文件中,如果有一个public class这样一个类,则类名一定要和文件名相同。即一个Java文件只能有一个public class   ②类中带有一个或多个方法。方法必须在类的内部声明。
  ③与C语言的printf不同,Java所使用的System.out.printfln会输出括号内容同时进行换行,并不用加\n
  ④string[] args这个数组是Java运行时的命令行参数。当我们求数组长度是可直接使用args.length来得到数组长度。
  ⑤一个类class会生成一个字节码文件,Java是随用随取的的。


三、整形变量

public static void main(String[] args) {
        int num = 10; //定义一个整型变量
        System.out.println(num);
    }

  ①在Java中,一个int变量都占4个字节,与操作系统无关。(4个字节为32位,即可以取到-2^31 ~ 2^31-1
  ②在Java中,没有无符号的int型,默认所有类型都是有符号的,即最高位都是符号位。

查看Java中的整型数据范围
public static void main(String[] args) {
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);
    }

  ①Integerint类型的plus,即理解为int的包装类。
  ②当运算结果超出int最大范围后,会出现溢出,即System.out.println(Integer.max_value+1)将会输出的是-2^31


四、长整形变量

public static void main(String[] args) {
        long num = 10L;
        System.out.println(num);
    }

  ①在初始化时,使用long num = 10;也可以,但这样其实10本身类型是int,这里我理解是进行了一次类型提升,所以直接定义为long num = 10L;加上L会更好一些。
  ②Java中long类型占8个字节,表示范围是-2^63 ~ 2^63-1


五、双精度浮点型变量

public static void main(String[] args) {
        double num = 1.0;
        System.out.println(num);
        double num2 = 1.1;
        System.out.println(num2 * num2);  //输出为:1.2100000000000002
    }

  Java和c语言一样,都是尝试在有限的内存空间内表示可能无限的小数,所以必定粗在精度误差。


六、单精度浮点型变量

public static void main(String[] args) {
        float num = 1.0f; //也可以写作1.0F
        System.out.println(num);
    }

  num = 1.0这种默认1.0会是双精度类型,所以如果要确保单精度类型则需要加上F,即num = 1.0f。但工程上一般都是用double因为float表示的数据精度范围较小。


七、字符类型变量

public static void main(String[] args) {
        char ch = '周';
        System.out.println(ch);  //输出: 周
        char ch1 = 6666;
        System.out.println(ch1); //输出:ᨊ
    }

  ①在Java中,char类型占用两个字节,即16位,所以它总共可以表示2^16 = 65 536个字符,所以可以用它来表示汉字。
  ②在Java中使用单引号 + 单个字母即’a’,与c语言相同都是表示字符的面值,Java中使用的是Unicode字符集,此字符集中包含了ASCII码表的255个字符。
  ③当我们不在IntelliJ IDEA编译器中执行上段代码而是在cmd控制台执行时,可能会出现报错,提示错误:未结束的字符文字这是因为当我们使用javac指令进行编译时,默认是以GBK编码来进行编译,所以我们需要使用javac -encoding UTF-8 文件名.java


八、字节类型变量

public static void main(String[] args) {
        byte value = 0;
        System.out.println(value);
    }

  字节类型,只占1个字节,8个bit位,其数字取值范围是-128 ~ 127

九、短整型变量

public static void main(String[] args) {
        short value = 0;
        System.out.println(value);
    }

  短整型变量占2个字节,16个bit位,其数字数值范围是-2^15 ~ 2^16

十、布尔类型变量

public static void main(String[] args) {
        boolean value = true;
        System.out.println(value);
    }

  ①boolean类型的变量只有两种取值true表示真,false表示假,且boolean与int类型不能相互转换,这点与C语言不同。
  ②对于boolean类型所占字节数在JVM规范里并未明确规定,但目前有博客观点认为是占1个byte(字节)也有认为占1个bit位

十一、字符串类型变量

public static void main(String[] args) {
        String name = "zhoucheng";
        System.out.println(name);
    }

  ①使用单引号引起的是一个字符,双引号引起的是一个字符串。

  ②String为引用类型,数据类新基本可以分为下表,我们需要着重记住的的是两类特殊包装类即char ⇒ CharacterInt => Integer

java怎么查看数据类型信息_java怎么查看数据类型信息


  ③字符串+操作,表示字符串的拼接

public static void main(String[] args) {
        String a = "Hello";
        String b = "World";
        String c = a + b;
        System.out.println(c);  //输出为:HelloWorld
        int q = 10;
        int w = 20;
        System.out.println("a = " + q + ",b =" + w); //输出为:a = 10,b =20
    }

十二、类型转换

int和long混合运算
public static void main(String[] args) {
        int a = 10;
        long b = 20;
        int c = a + b;  //这样会编译出错,这里将long转换成int会丢失精度
        long d = a + b; //这样则编译通过
    }

  当intlong混合运算时,int会提升成long,且得到结果仍为long型,若非要用int类型来接收,则要使用强制类型转换。

byte和byte运算
public static void main(String[] args) {
        byte a = 10;
        byte b = 20;
        byte c = (a + b);       //编译不通过
        byte d = (byte)(a + b); //编译通过
        System.out.println(d);
    }

  虽然a和b都是byte类型,但是在计算a+b时计算机会先将a和b提升成为int型,则计算结果为int型。这是因为计算机的CPU通常按照4个字节为单位从内存中读写数据。为了硬件上实现方便,诸如byte和short这种低于4个字节的类型(仅对数字运算来说),会先提升为int再计算。

int转换成String
public static void main(String[] args) {
        int num = 10;
        String str1 = num + ""; //方法1
        String str2 = String.valueOf(num); //方法2
        System.out.println(str1);
        System.out.println(str2);
    }
String转换成int
public static void main(String[] args) {
        String str = "100";
        int num = Integer.parseInt(str);
        System.out.println(str);
    }

补充:
类中有几中变量,分别是局部变量,定义在类方法里的变量;
实例变量,在方法外而在类里声明定义的变量,有时也叫成员变量;
类变量,用关键字static声明的实例变量。
局部变量在定义该变量的方法被调用时被创建,而在该方法退出后被撤销,局部变量在使用前被初始化。