Java入门:掌握基础概念和要点

发表时间: 2024-04-21 02:23

1.什么是java

java是一种面向对象的编程语言。

摒弃了c++语言的多继承和指针等难以理解的概念。

同时增加了垃圾回收机制(GC),

释放了不被使用的内存空间,

解决了管理内存空间的烦恼。


2.java的特点

面向对象

(封装 继承 多态 抽象(数据抽象(成员属性) 过程抽象(成员方法) ))

平台无关性("一次编译,到处运行",原因:jvm虚拟机,字节码只面向jvm)

简单性

解释执行

(((jdk)-> jre)-> jvm)

(源代码 ->((java编译器)(词法分析器 语法分析器 语法抽象语法树 语义分析器 注解抽象语法树 字节码分析器)编译)->字节码文件.class ->(类加载器 字节码校验器(jvm)解释)-> 机器可执行的二进制机器码 ->((操作系统)执行) )

多线程(Thread类,Runnable()方法)

分布式(RIM 机制)

健壮性(提供了异常处理机制、强类型机制、垃圾回收机制(GC))

高性能(JIT(即时编译)))

安全性(提供安全机制,分配不同的名字空间以防止替代本地的同名类)


3.Oracle JDK 和 Open JDK

Oracle JDK:版本每三年发布一次,是Open JDK的一个实现,不完全开源,比Open JDK更稳定,根据二进制代码许可协议获得许可,响应性和jvm性能方面比Open JDK更好,不会为即将发布的版本提供长期支持(LTS)


Open JDK:版本每三月发布一次,根据GPL v2许可获得许可


4.java的几种基本数据类型(拆箱)(将变量值存放在栈中)

内存空间大的数据类型转换为小的会发生精度丢失

1byte(字节) = 8bit(位)(下面自己换算)

byte(1byte)(default_value:0)

short(2byte)(default_value:0)

int(4byte)(default_value:0)

long(8byte)(default_value:0L)

float(4byte)(default_value:0.0f)

double(8byte)(default_value:0.0d)

char(2byte)

boolean(1byte) (default_value:false)


它们的包装类(装箱)(初始值为null)(将对象存放在堆中):

Byte Short Integer Long Float Double Character Boolean


5.引用数据类型:类 接口 数组


6.基本数据类型和引用数据类型的区别

基本数据类型的变量名指向具体数值;数值存放于栈内存中;用==和!=判断数据是否相等


引用数据类型的变量名指向存数据的内存地址,也就是hash值;数值(hash值)的引用存放于栈内存中,对象地址存放于堆内存中,然后由栈内存中的引用指向堆内存中的对象地址;用equals()方法比较内存地址


7.a=a+b与a+=b区别

a+=b:右边表达式会进行隐式自动类型转换为左边的数据类型


8.final在java中的作用

final修饰类:该类比可以被继承

final修饰方法:该方法不可以被重写

final修饰变量:该变量只能被赋值一次且不可被修改

final修饰常量:在编译阶段会存入常量池中


9.static在java中的作用

static修饰类:可以直接通过类进行调用

static修饰变量:分配在内存堆中,引用都会指向这个地址而不会重新分配内存

static修饰方法块:虚拟机优先加载


10.什么是序列化(可序列化)(可串行化)

将对象的状态信息转换为可以存储或传输的形式的过程


序列化:将java对象转换成某种格式的字节流进行传输或者存储到硬盘(持久化)

反序列化:将某种格式的字节流转换成java对象


目的:为了网络进行传输(流)和持久化(存储)


序列化方式:

Serializable接口序列化(常用)(mini接口,没有要实现的方法,只是为了标注此对象是可被序列化的)

Json序列化

FastJson序列化

ProtoBuff序列化


有误之处望指点!【Email:3147310397@qq.com】