> 文档中心 > Java最基础模糊知识点快过

Java最基础模糊知识点快过

目录

  • 关于JDK、JRE、JVM
    • 简单理解:
    • Java跨平台原理(一次编译,到处执行):
  • 第一个Java程序编写
    • 代码编写
      • 注意
    • 编译阶段(编译器创建class字节码文件 )
    • 执行阶段
  • 关于注释
  • 命名规则
  • 数据类型
    • Java——强类型语言:
    • 基本数据类型
        • 整数类型:
        • 注意:
        • 浮点类型: float double
        • 字符类型: `char`
        • 布尔类型:` boolean`
    • 引用数据类型:
  • 关于变量和常量
    • 变量
    • 常量
  • 关于数据类型转换(自动转换、强制转换)
    • 类型转换的方向
    • 总结
  • switch多分支选择结构注意点
  • 关于while循环
  • 关于数组

关于JDK、JRE、JVM

Java最基础模糊知识点快过

简单理解:

JDK(Java Development Kit)简单理解就是Java开发工具包。
JDK = JRE + 开发工具集(例如Javac编译工具等)

JRE(Java Runtime Enviroment):Java的运行环境。
JRE = JVM + Java SE标准类库

JVM( java virtual machine):Java虚拟机。(JVM是Java跨平台的核心)(充当翻译官的角色)

JDK是面向开发者的,JRE是面向使用JAVA程序的用户。

JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。

在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库。

如果讲的具体点就是bin目录下的jvm.dll文件, jvm.dll无法单独工作,当jvm.dll启动后,会使用explicit的方法(就是使用Win32 API之中的LoadLibrary()与GetProcAddress()来载入辅助用的动态链接库),而这些辅助用的动态链接库(.dll)都必须位 于jvm.dll所在目录的父目录之中。

因此想使用哪个JVM,只需要设置PATH,指向JRE所在目录下的jvm.dll。

Java跨平台原理(一次编译,到处执行):

Java最基础模糊知识点快过
执行时,表面上,我们调用的是java.exe,实际上,此时动态调用了JVM。

JVM将字节码文件一行行地解释成为当前OS认识的可执行文件格式。(Java是个”解释型“语言)

第一个Java程序编写

代码编写

public class hello {public static void main(String[] args) {System.out.println("hello");}}

Java最基础模糊知识点快过

注意

  1. java文件的名称必须跟public class的名称保持一致
  2. 一个java文件中可以包含多个class,凡是public class只能有1个
  3. public static void main(String[] args)是所有java程序的入口,如果向执行对应的java代码,则必须要添加如下方法,且格式是固定
  4. main方法中参数列表可以支持多种写法:String[] args,String [] args,String args[]
  5. main方法中参数的名称无所谓,但是一般写成args
  6. java代码在编写的时候,每行结尾的时候需要使用;结束
  7. java代码的代码块需要使用{}括起来,前后匹配

编译阶段(编译器创建class字节码文件 )

  • 进入java文件所在目录,执行命令:javac hello.java
  • 编译时必须加上扩展名.java
    Java最基础模糊知识点快过

执行阶段

  • 进入java文件所在目录,执行命令:java Welcome
  • 运行的是类而非class文件,所以类名后不能加扩展名.class
    Java最基础模糊知识点快过

关于注释

注释不会出现在字节码文件中。(Java编译器编译时会跳过注释语句)

验证:(使用反编译工具)
Java最基础模糊知识点快过

Java最基础模糊知识点快过
使用反编译工具进行反编译,没有发现注释。

原因:因为编译的时候不会对注释进行处理,所以反编译时不可能得到注释。

命名规则

和C/C++很相似,除了多了一个$符号和汉字。

因为:Java不采用通常语言使用的ASCII字符集,Java采用unicode这样的标准的国际字符集。

但是不建议使用汉字来命名。

数据类型

Java——强类型语言:

  1. 常量是有数据类型的
  2. 变量都必须声明其数据类型
  • 基本数据类型(四种八类):
    • 数值型
      • 整数类型(byte、short、int、long)
      • 浮点类型(float、double)
    • 字符型(char)
    • 布尔型(boolean)
  • 引用数据类型
    • 类(class)
    • 接口(interface)
    • 数组

基本数据类型

整数类型:

byte short int long(不同类型表示不同的长度)

  1. byte: 使用一个字节存储,因此范围是 -128-127
  2. short: 使用两个字节存储,因此范围是 -32768-32767
  3. int: 使用四个字节存储,因此范围是 正负21亿
  4. long: 使用八个字节存储

注意:

  1. 在使用整型类型的时候,默认都是int类型,
  2. 如果需要使用long类型的话,必须要在数字的后面添加L,建议使用大写,小写容易跟1混淆。

浮点类型: float double

小数类型:使用小数点 使用科学计数法

  1. float: 单精度,精度可以精确到小数点后7位
  2. double: 双精度,精度是float的双倍

注意:
1、默认浮点类型是double类型
2、使用float的时候,数字后要添加f
3、浮点类型并不能表示一个精确的值,会损失一定的精度

字符类型: char

占用2个字节,使用的时候使用''表示

布尔类型: boolean

只有truefalse两值,在存储的时候占1位

引用数据类型:


接口
数组

关于变量和常量

变量

  1. 在类内,方法外定义的变量叫成员变量,会存在默认值

  2. 在方法内,定义的变量必须要进行初始化操作,不会存在默认值

  3. 不存在全局变量

  4. 给变量赋值过程中,变量的值成为常量

常量

使用final修饰的变量,只能被初始化一次,变成了常量。

final int t = 1;

关于数据类型转换(自动转换、强制转换)

除boolean类型外,所有的基本数据类型因为各自的精度不同,赋值时都要考虑这个问题

类型转换的方向

低------------------------------------------------------>高
byte —> short,char—>int —>long—>float —>double

总结

=右侧:所有变量先转换为字节数最多的数据类型,再计算

=两侧:

  1. 左侧宽度>右侧宽度 自动转换
  2. 左侧宽度<右侧宽度 强制转换

特例
可以将整型常量直接赋值给byte, short, char等类型变量,而不需要进行强 制类型转换,只要不超出其表数范围

short b = 12;  //合法short b = 1234567; //非法

switch多分支选择结构注意点

只能处理等值条件判断的情况,且表达式必须为 byte,short,int或char类型 ,不能是Stringdouble,float

1.7之后可以使用string

关于while循环

在C/C++中经常用的一个写法,在Java中不能用。
Java最基础模糊知识点快过
换个写法:

while (n-- != 0) {    sum += h;    h /= 2;}

这种情况也出现在if中,因为在Java中,有了纯粹的布尔类型。

关于数组

//声明数组int[] array;//创建内存空间array = new int[5];//数组赋值array[0] = 0;array[1] = 1;array[2] = 2;array[3] = 3;array[4] = 4;//数组操作System.out.println(array[0]);//数组的几种创建方式//1、声明并申请空间int[] arr1 = new int[5];int [] arr2 = new int[5];int  arr3[] = new int[5];//2、声明数组并赋值int[] arr4 = new int[]{1,2,3,4,5};//3、直接初始化操作int[] arr5 = {1,2,3};//获取数组的长度System.out.println(arr1.length);

数组是引用类型,当创建完成数组之后相当于是在方法外定义了一个变量,此时数组中的值是有默认值的。

默认是什么,取决于你定义的数组的类型:
int:0
String null
boolean false