0JAVA
1.Java两大核心机制 垃圾回收机制和虚拟机JVM
2.Java中关键字含义 java内定的规定的语法关键字赋予了特定的意义,定义一个类的关键字class
3.JAVA区分大小写
1.Java程序基本结构认识
最基本的结构
public class Hello { // 类名是Hello
// ...
} // class定义结束
{}代码块
;一行语句
[]数组中常用索引标识
()表示方法,类中用
.运用调用方法
//单行注释
/** */多行注释
1.1.类名要求:
- 类名必须以英文字母开头,后接字母,数字和下划线的组合
- 习惯以大写字母开头
类名要求:
- 类名必须以英文字母开头,后接字母,数字和下划线的组合
- 习惯以大写字母开头
1.2.变量名要求
变量名名必须以英文字母、数字、_和$的组合
1.必须由字母或下划线或$开头,建议字母开头,虽然其他不会报错
2.命名不能是关键字
常量字母都大写命名为好,为了向JAVA的API标准靠齐(如:int a=Integer.MAX_VALUE;)
1.3.方法命名基本上同类命名
不同的是小驼峰,小写字母开头
2.变量和数据类型
2.1.八大基本数据类型
特征:int a,b=0;
基本类型不会自动初始化(C语言貌似是相反的)
数值类型
整数类型:存储整数的数值数据
byte short int long
排列顺序:最小的byte,最大的long
存储范围:byte
浮点类型:存储带小数点的数据
float double
字符类型:存储单个字符的数据
char----ASCII值,特别的:‘a'代表整数值,”a“代表字符
布尔类型:存储true和false
boolean
var 为待定基本数据类型(java10,,,目前不确定1.8还有没有)TODO搞清楚
数据的表示范围取决与bit位数:
补码表示,8位:-128~127其他的自行推理
浮点类型:IEEE754,32:1+8+23;64:1+11+52
1:一个符号位
8||11:移码=补码能表示的最大整数+真值
23||52:尾数1.XX,省略1,仅仅存储XX
这也是为什么同样大小的数据类型,浮点型比整型不仅精度高,而且表示的数据范围大。
大转小,要强转,小转大为自转(类似兼容)
如:
long c=55888885;
int a=(int) c;
int b=6;
要想b/a得到浮点数也必须先自转,否则肯定会得到0.
自转一个即可,运算结果选择表示范围大的。
2.2基本封装类、引用数据类型
特征:
Object obj=new Object();
int a[]=new int[x];//x代表多少个,初始化为0
基本封装类:Integer、Long等等八大基本数据类型对应的封装类;
Long到Integer,需要强转。
引用数据类型:
类 class Test类名
接口 interface 接口名
数组 int[] 数组名
引用数据类型:String、数组(继承Arrays)等等、及自定义的数据类型(类、接口、枚举);
父类转子类类型,需要强转。
易混:特别容易把String和基本数据类型混为一谈,因为他们都是经常用的。
他们最大的区别是:String有API提供的方法使用,而基本数据类型只能作为方法的参数使用,不能调用API。
2.3.字符和字符串
字符是;char 'a',基本数据类型
字符串是:String "a",引用数据类型
character
的缩写。一个char
保存一个Unicode字符Java在内存中总是使用Unicode表示字符,所以,一个英文字符和一个中文字符都用一个
char
类型表示,它们都占用两个字节。直接用转义字符
\u
+Unicode编码来表示一个字符:// 注意是十六进制: char c3 = '\u0041'; // 'A',因为十六进制0041 = 十进制65 char c4 = '\u4e2d'; // '中',因为十六进制4e2d = 十进制20013
特别:
引用类型的变量可以是空值
null
;要区分空值
null
和空字符串""
。不然会出现重大数据库错误事件。
常见的转义字符包括:
\"
表示字符"
\'
表示字符'
\\
表示字符\
\n
表示换行符\r
表示回车符\t
表示Tab\u####
表示一个Unicode编码的字符+连接字符串的符号
2.4.运算
逻辑运算符(非代码使用):⊕(异或),⊙(同或)
整数运算
浮点数运算
布尔运算
运算符:
+,-,*,/,%
&(按位与),|(按位或),^(异或),~(非)
>>,<<(移位运算)
++,--
在比较运算中特别能体现++和— -放在变量前后的不同
前:先+1再比较
后:先比较后+1
比较运算符:
<,>
&&,||,!(非)
==,>=,<=,!=(不等于)
布尔运算中特别注意位置关系,实现短路运算一定程度上加快了执行速度
三元运算符
Java还提供一个三元运算符
b ? x : y
,它根据第一个布尔表达式的结果,分别返回后续两个表达式之一的计算结果。
封装类中的比较:.equals()
特别的:n%m的运算结果与n的符号有关
溢出:
要特别注意,整数由于存在范围限制,如果计算结果超出了范围,就会产生溢出,而溢出不会出错,却会得到一个奇怪的结果。
特别的:浮点数存在下溢,处理为0,不算错误。
整数运算在除数为0
时会报错,而浮点数运算在除数为0
时,不会报错,但会返回几个特殊值:
NaN
表示Not a NumberInfinity
表示无穷大-Infinity
表示负无穷大
Math
Math封装类中有许多运算:
如;Math.sqrt()表示算术平方根
2.5.数组类型
* 数组的概念:可以看做是一个容器,用来装很多东西
* 可以存储一组相同数据类型的容器,开辟一组连续相同的空间用来存储相同类型的数据
* 一个班级有20个人
* String s = "";
* int b = 330;
* int a = 10;
*
* 栈区 -- 普通/局部变量
* 堆区 -- 对象--成员变量
* 方法区/永久区
*
*
* 数组的定义的几种方式:
* 1.边声明边指定长度
* 类型[] 数组名 = new 类型[指定长度];
* 例如:int[] array = new int[10];
* 2.快速声明和赋值
* 类型[] 数组名 = {值1,值2,值3....};
* 例如:int[] array = {10,20,30};
* 3.边声明边赋值
* 类型[] 数组名 = new 类型[]{值1,值2,值3,...};
* 例如:int[] array = new int[]{10,20,30};
*
* 数组的特点:
* 1.数组是有索引/下标的,从0开始
* 2.数组是引用数据类型
* 3.只能存储一组相同的数据类型的元素,不能存储不同类型的数据
* 4.数组的长度是固定不变的
* 5.不能访问超出数组定义的长度范围
* 6.不能给超过数组的长度进行赋值
* 7.数组是存储在堆区中的,所以系统会赋予默认值
* int 0
* double 0.0
* char \u0000
* boolean false
* String null
* 8.可以定义任意类型的数据,引用类型/基本类型
* 9.数组不能像基本数据类型那样二次赋值,必须带索引。
数组的遍历:
*
* 数组的赋值:
* 数组名[下标] = 值1;
* array[0] = 10;
* 静态赋值法:直接赋值
* 动态赋值法:通过用户输入赋值
*
* 数组的属性:length长度
* 数组的使用:
* 数组名[下标]
* 数组工具类:Arrays
* 用来方便进行操作数组提供的一个工具类,JavaAPI
* 数组-排序,查找,拷贝,遍历