Java基础语法
java发展史
James Gosling,Java由C++改编,初期称为“Oak” ,1995年Sun推出,
1998年jdk1.2改名为java2,2009年 被Oracle收购,2014年发布java8。
计算机进制转换
二进制0b 八进制0 十进制 十六进制0x
名词解释
JVM是java虚拟机
JRE是Java程序的运行时环境,包含JVM和运行时所需要的核心类库。(仅运行)
JDK是Java程序开发工具包,包含JRE和开发人员使用的工具。(开发并运行)
运行与工作原理
编译 通过javac.exe将.java文件编译为.class文件
运行 通过java.exe,启动jvm虚拟机,并加载.class文件
注释
单行注释 //注释内容
多行注释 /* 注释内容*/
文档注释
/** 注释内容
*/
标识符
硬性命名规则:有字母数字下划线$组成,区分大小写,数字不能开头,不能为关键字。
软性命名规则:驼峰命名
基本数据类型
byte | -128~127 |
---|---|
short | -32768~32767 |
char | 0~65535 |
int | 4个字节 -21亿~21亿左右 |
float | 4个字节 |
double | 8个字节 |
boolean | 1个字节 true、false |
浮点型的存储原理
此处以float为例,float占四个字节即32位,从左向右,首位为符号位,2-9位为指数位,余下23位为底数位(实际为24位,因为首位始终为1故舍去)
变量的声明与赋值
变量可以逐一声明逐一赋值,也可同时声明时分别赋值。
对于float与long类型,赋值时要添加必要的f与L。
自动、强制类型转换
自动类型(隐式):将数据范围小的变量自动转换为范围大的数据类型。
强制类型:通过强制类型转换的方式将范围大的数据变量转换为范围小的数据。
注:强制类型转换易发生精度丢失与数据溢出,需谨慎使用。
ASCII编码表
American Standard Code for Information Interchange 美国信息交换标准代码。
Unicode:万国码。
字符 | 对应的值 |
---|---|
0 | 48 |
A | 65 |
a | 97 |
运算符
算数运算符 +、-、*、/、%、++、--
赋值运算符 =、复合赋值运算符(+=、-=、*=等)
比较运算符 >、>=、<、<=、==
逻辑运算符 &&、||、!
对于&&与||也称短路与短路或
false&&boolean发生短路与
true||boolean发生短路或
三目运算符 boolean ? 值1:值2;
字符串连接符 +
选择结构
单if
if-else
if-else if
switch switch的参数只能为整型(byte、short、char、int)、String或枚举,否则会发生编译错误。
if-else if与switch的优缺点比较
switch使用的参数类型较为单一,并且仅能进行等值判断,但是结构相较于if-else if更加清晰明了,在if-else if不能第一个if判断为true的情况下,往往switch的效率更高。
循环结构
while
do while
for
如上三者的异同
当条件始终不能够成立的情况下,do while会执行一次,而while与for均不会执行,对于for循环中初始化语句如果是在小括号内定义则,该变量只能在循环内部使用。
break&continute
break 常用与跳出循环以及在switch case中使用
continute 跳过当次循环,直接执行下一次循环
方法重载
同一类中,方法名相同,方法参数列表不同。
数组
数组是一种引用类型,数组中的数据类型必须统一,数组长度不能发生改变。
数组的初始化
静态初始化
int []a=new int[]{27,17,56,96,33};//标准格式
int []b={27,12,53,75};//省略版,常用
动态初始化
int []c=new int[5];
//通过for循环进行赋值
数组的长度
int []d=new int[]{12,34,6};
System.out.println(d.length);
数组的索引
数组内容通过索引进行访问。
数组中常见的异常
ArraysIndexOutOfBoundsException
NullPointerException
数组的复制
System类 public static native void copyOf(src, srcPos, dest, destPos, length);//易发生越界
Arrays类 public static int[] copyOf(original,newLength);//重新创建数组