Java最基础模糊知识点快过

关于JDK、JRE、JVM

在这里插入图片描述

简单理解:

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.exe,实际上,此时动态调用了JVM。

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

第一个Java程序编写

代码编写

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

在这里插入图片描述

注意

  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 Welcome
  • 运行的是类而非class文件,所以类名后不能加扩展名.class
    在这里插入图片描述

关于注释

注释不会出现在字节码文件中。(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中不能用。
在这里插入图片描述
换个写法:

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

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FeatherWaves

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值