java学习(一)-基本概念
分类:
文章
•
2023-12-31 14:29:11
一、基本概念
1、编译器、JVM与解释器
-
Java编译器:将Java源文件(.java文件)编译成字节码文件(.class文件,是特殊的二进制文件,二进制字节码文件),这种字节码就是JVM的“机器语言”。javac.exe可以简单看成是Java编译器。
-
JVM:JVM有自己完善的硬件架构,如处理器、堆栈(Stack)、寄存器等,还具有相应的指令系统(字节码就是一种指令格式)。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需要生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM是Java平台无关的基础。JVM负责运行字节码:JVM把每一条要执行的字节码交给解释器,翻译成对应的机器码,然后由解释器执行。JVM解释执行字节码文件就是JVM操作Java解释器进行解释执行字节码文件的过程
-
Java解释器:是JVM的一部分。Java解释器用来解释执行Java编译器编译后的程序。java.exe可以简单看成是Java解释器。
2、对象村
-
类:是用例创建对象的模型
-
对象:是已知的事物、会执行动作。对象创建会被放在堆的内存区域中(此堆是可垃圾回收的堆,java可主动帮你管理内存,或者监控到该对象不被引用,则标记为可回收;当内存不足,垃圾收集器就是启动收集被标记的内容,释放内存)
-
实例变量:对象本身已知的事物,声明在类中,永远都会有默认值(integer=0,float=0.0,boolean=false,reference=null)
-
方法:对象可以执行的动作
-
局部变量:声明在方法中的变量,声明在方法中,无默认初始值,使用前必须初始化,不初始化,编译的时候会报错。
-
全局变量:任何变量只要加上public、static、final修饰符的变量,可被当做全局变量取用的常数**(其实在java面向对象概念中是没有全局变量的,但实际上会有需要方法和常量被任何的程序中存储,比如Random()、pi等,但这两个也是基于Math类中的变量和方法。)**
3、main()的两种用途
-
写法:psvm(public static void main(String args[]){})
-
用途:测试真正的类;启动java应用程序。(一般来说main里面的语句)
二、认识变量和对象
1、变量的类型:
-
primitive主数据类型:其变量值就是所代表的值,如整型、布尔型、浮点型等
-
引用变量类型:引用对象的变量,其变量指的是取得特定对象的方法。事实上没有对象变量这样的东西,只有引用到对象的变量,有点类似对象的指针/地址,我们并不知道引用变量中实际中装载的是什么,大概是存取对象的方法,而且只有java虚拟机知道如何引用取得该对象。(没有引用到任何对象的引用变量的值为null值)
- 规则:必须有type类型(java是类型安全,在编译期间进行检查);必须要有名字
2、对象的新建分为三步:
- 声明一个引用变量
- 创建对象
- 连接对象的引用(当没有连接的时候,引用变量的值为null)
3、对象的行为
- 对象有状态和行为两种属性。状态影响行为,行为影响状态。
- 方法会运用形参,调用的一方会传入实参。传递给方法的参数必须符合声明时候的数量、顺序和类型(参数的传递按照顺序,若类型不符会报错)。方法的参数也属于一种局部变量
- 方法都需要声明返回类型,而且是单一的返回值,当需要多个的时候,可以声明数组的返回类型;没有返回值的时候声明void。
4、参数的传递
- java是通过值传递的,也就是通过拷贝传递的。在方法内部改变传过来的值,不会影响之前的值。当传递的是引用变量的时候,实际也是传入的远程控制的拷贝
5、变量的比较
-
== :对于primitive类型的变量来说,使用==比较的是存储在内存中的具体数值是否相等;对于引用变量来说,比较的是是否引用指向同一个变量。
-
equal:比较的是引用变量指向的对象,是否相等。
6、装箱和拆箱