1.java语言特点

简单性 编译性 健壮性 解释性 安全性
高性能 跨平台 开源 分布式处理

2.什么是跨平台?

简单来讲:跨平台就是在不同的操作系统中使用相同的软件。
注:这里的相同软件为一次编译的软件,即一次编译到处使用

3.跨平台的原理是什么?

相同的编译程序,不同系统的JAVA虚拟机,JAVA虚拟机的工作原理是一样的,即可以实现一次编译多次使用

4.JDK是什么?

JDK即是java语言的开发工具包,是整个java程序开发的核心
JDK是针对于开发人员的,
JRE和JVM一般是针对于普通用户的运行环境、
JRE只能运行class文件,而不能进行编译,内部结构有lib目录和bin目录,bin是JVM,
lib是运行类库

5.虚拟机的工作原理?

编译的时候通过javac将java的源文件编译成.class文件
执行:
先启动java虚拟机,不同的操作系统有不同的jvm(java程序的运行环境,也指对应jre内部的lib运行类库)
在通过JVM加载编译的.class的字节码文件,并加载响应的mian方法执行程序

6.关键字

java共有53个关键字并且true和false并不算关键字

7.JAVA的基本数据类型总结

java是一种强类型语言
java有8种数据类型,其余全部属于引用类型
分别为byte、short、char、int、long、float、double、boolean
字节空间分别为byte 1字节 short 2字节 char 2字节 int 4字节 float 4字节 long 8字节 boolean 1字节(对应着8bit,16bit,16bit,32bit,64bit,32bit,64bit,8bit)
4种整数类型,2种浮点型、1种字符类型,和表示真值类型
整数类型为整数但是可以为负数
浮点数即为小数,浮点型两种分别为单精度和双精度
常用的为int
byte和short一般特定的时候使用,byte一般使用与底层文件数组的操作
long为长整数
表示当前变量为长整数时需要在变量值后面加l或L
float类型并不常用很多时候单精度并不能满足大多数的业务逻辑需要,在使用的时候需要值后面加f或F
double类型为双精度,此类型常用
一个特殊的值NaN
char类型表示为一个字符,字符的采集编码为Unicode编码集的前65535个,同时char类型可以作为数学运算(根据字符对应的数字)
boolean类型只有两个值true和false作为逻辑运算并且不能和整型类型进行强转

8.引用类型的概念

引用类型是一个对象类型,对应的值是一个内存空间的引用(哈希算法得到的值)
称为地址,并且在java中基本类型除外都是属于引用类型,这就引起了一个概念,在多数情况下,引用类型所保存或者显示的值都是地址值

9.隐性转换和强制转换(显示转换)

小转大,系统自动的隐性转换
大转小,变量值前面(要强转的类型)
在强制类型转换中,如果浮点数转整数,小数会被无条件丢弃

10.JAVA运算规则

计算结果的类型和最大类型一致
byte,short,char三种比int小的数会在运算的时候自动转换成int类型
如果想要得到对应的数据类型,需要强转
整数运算超过数据类型的最大值会从该类型的最小值继续运算(精度丢失)
浮点数运算不精准
浮点数的特殊值: 无穷大 无穷小 Nan

11.JAVA运算符

java运算符大致分为5种

11.1.算术运算符

基本运算 +-*/
%取余,++,—自增和自减
a++,和++a的区别,单独的时候都是=a+1,在赋值运算的时候a++,为先做赋值后做运算,++a为先做运算后做赋值

11.2.比较运算符

== 和 != 相等和不相等
值结果为true和false也就是对应的boolean类型

11.3.逻辑运算符

&&和 & 逻辑与(短路与)
两者之间的区别
只要有一个真结果就为真 两个真结果才为真
|| 和 | 逻辑或(短路或)
只要有一个真结果就为真 两个真结果才为真
“+”这里的”+”代表字符串连接
“!”代表取反 非真是假 非假是真

12.变量

变量就是可以改变的量,在java中我们在对使用变量时首先需要声明变量类型,然后给变量赋名字使用=对变量进行赋值,赋的值必须和声明的变量类型一致
变量名要求:
1.必须是一个有效识别符
2.变量名不可以使用java关键字
3.变量名不可以重复

12.1.局部变量

定义在方法里,或者局部代码块中
必须手动初始化.

12.2.成员变量

定义在类里
不用初始化,会自动初始化默认值,作用是在整个类中,类消失了,变量才释放

12.3.常量

常量,不可改变的量,用final修饰(final为修饰符:最终的)一次赋值,不可改变
变量名要求:
变量名为大写

13.数组

数组Array是储存多个相同类型数据的集合,如果想要获取数组中的元素值,可以通过元素的下标来获取,下标时候从0开始的(数据的第一个)

13.1.关于数组创建

一般为动态初始化和静态初始化
动态初始化
例如:int[] a = new int[5];
新建一个int数组,长度为5(注:数组长度不可改变!)
里面所有的int类型的值都为0(int)默认值为0
把数组的地址赋值给变量名a(引用类型保存地址)
注:何为动态?就是指其中的内容可以通过要求随时变动
静态初始化
int[] a={1,2,3,4,5}
int[] a = new int[]{1,2,3,4,5}

13.2.关于数组的长度

数组一旦创建不可改变长度
数组的长度通过length方法获取
允许0长度

13.3.数组的工具类Arrays常用方法

Arrays.toString()把数组里的数据通过+形成字符串
Arrays.sort()经过优化后的快速排列
Arrays.copyOf(数组,新的长度)复制数组长度由你决定,依次复制