JDK的配置
JDK的组成是:jre+java核心类库+java工具包
Path设置技巧:
JAVA_HOME环境变量 设置为\bin前面的路径,设置为Path =%JAVA_HOME%\bin,避免对系统环境的频繁修改造成错误,path只支持可执行文件
配置临时环境变量:
set path = XXXX
增加临时环境变量 set path=XXX;%path%
环境变量从头开始查找
配置类文件路径:
classpath 类文件路径
将java的类文件目录告诉JVM 未设置在当前路径
set classpath=c:\xxxxx;
加了分号虚拟机会在当前目录下查找类文件 .是指当前路径
阅读性加强 setclasspath=.;c:\xxxxx;
注意:当出现类文件找不到的错误时注意检查(1)类是否存在(2)classpath是否设置错误其中java的类名最好与java源文件名一致
java语言基础知识
关键字
定义:在java中被赋予特殊含义的单词
特点:都是小写的
标示符
标示符组成:26个大小写字母数字 _ $符号
标示符使用注意事项:(1)数字不可以开头(2)不可以使用关键字
(3)名字尽量要有意义 java中严格区分大小写
标示符的作用:标识符可以做 类名 变量名方法名
下划线、美元符号的作用 :用于连接某些名称
注释的作用:提高了代码的阅读性
java语言中有三种注释方式:
(1)单行注释 //XXXX
(2)多行注释 /* XXXX */ 注意的是多行注释不能嵌套
(3)java特有的文档注释/** XXXX */
注释不会被写入字节码文件
其中文档注释可以用javadoc 命令提取出来
当要将文档注释生成的文档放在当前目录下时可以加上 -d . 命令
常量
常量表示不能改变的数值
常量分类:整数常量、小数常量、布尔常量、字符常量、字符串常量 、null常量(只有一个值null)
整数的进制表现形式:二进制 由0和1组成 0100
八进制 开头为0的数字
十进制
十六进制 以0x开头由数字0-9 字母a-z组成 0xf
各进制与二进制:(1)八进制占二进制三位
(2)十六进制占二进制4位
常用的进制:二进制和十六进制
负数在内中的存在形式:负数在内存中是以补码的形式存在的
负数二进制最高位是1 整数是0
补码的算法:负数的绝对值取反加1
例如:
变量
变量的特点:(1)内存中的一个存储区域
(2)该区域有自己的名称和类型
(3)该区域的数据可以在同一个类型的范围内不断变化
作用:用来不断的存放同一类型的常量,并可以重复使用
变量的格式:
数据类型变量名 = 初始化值
变量就如同数学中的未知数
当数据不确定时就定义变量
定义变量注意事项:
(1)变量不能重复定义
(2)局部变量必须初始化
(3)实例变量可以不初始化 虚拟机会为实例变量初始化
(4)运算两端必须都是相同类型的变量
Java的数据类型
Java整形默认是int 浮点默认是double
强制转换必须小心使用,会丢失精度
强转例子:
byte b = 4; b = 3+7; byte b1 = 3; byte b2 = 4; b = b1+b2;//err 精度损失
分析:byte b =4; 4在java中默认是int型编译器会先检查所赋的值在-128~127范围内,在的话自动强转为byte类型
b = b1+b2;//err 精度损失
b1,b2 为变量范围不确定编译器不能确定值,所以编译报错
注意:右边无法确定则无法判断并赋值,编译无法通过
ASII码表 美国信息交换表
GB2312 国标表
GBK 国标扩展表
Unicode表 国际标准码表
例子2
int x1= Integer.MAX_VALUE; int x2 = 2; int x = x1 + x2;//error 会产生精度丢失
运算符
算数运算符:+ - * / % = ++ -- 字符串相加的 + += -= *= /=
注意:(1)负数只参考被取余的数 5%-2 == 1
(2)除号右边为0会抛出ArithmeticException(算数异常)
例子:
int a = 3,b;
b = a++;
内存中的过程:a变量先在内存中划一块临时区域保存a变量的值,再自增运算,最后将临时区域的值赋值给b变量
面试小例子1:
int i =3;
i =i ++;//i的值为3
过程:i=i+1 i = i在临时区域的值
面试小例子2:
short s = 3;
s+=4;//加等会在底层自动转换类型 与short s =3 类似
s = s+4;//error损失精度
比较运算符:> = < >= <= != == instanceof
instanceof作用:XX instanceof XX 判断左边的对象是否是右边的类或其子类
注意:比较运算符运算完的结果必须是true或者是false
逻辑运算符:& | && ||
逻辑运算符:用于连接两个boolean类型的表达式
其中&&称为短路与 ||称为短路或
& 与 符号运算特点:
true & true true
true & false false
false & false false
与运算两边只要有一边为false结果为false
只有两边都为true结果为true
| 或运算符特点:
true | true true
true | false true
false | false false
或运算两边只要有一边为true结果为true
只有两边都为false结果为false
^ 异或运算符 和或有点不一样
true | true false
true | false true
false | false false
异或运算规律:相同为false 不同为true
&&与&的区别:
& 当左边为false是右边运算,&&当左边为false时右边不运算,因此成为短路与
||与|的区别:
|| 短路或当左边为true时右边不运算,|则无论左边为false或者true右边都运算
位运算符:& | ^ ~ >> >>> <<
& 运算 可以取二进制数的某一段
^ 异或符号: 一个数异或同一个数两次,结果还是这个数 6^3^3 = 6;
~ 取反 一个正数的反码是这个正数的负数减一 6的反码是-7
移位运算符号
>> 右移 3>>2 右移2位符号位补最高位
右移n位其实就是该数字除以2^n次方
<< 左移 3<<2 左移两位 最低位补零
左移n位其实就是该数字乘以2^n次方
>>> 无符号位右移 3>>>2 无符号位右移2位
例子:
对两个值进行互换高效方法(不用第三方变量)
分析: 一个数异或同一个数两次,结果还是这个数int a = 5,b =3; a = a^b; b = a^b; a = a^b;
三元运算符 (表达式)?表达式1 : 表达式2
如果表达式为true则运行表达式1,为false则运行表达式2
java流程控制语句
流程控制分类:顺序结构 判断结构 选择结构 循环结构
判断结构:
(1)if(){........}
(2)if(){....}else{......}
(3)if(){;;;;;}
else if(){......}
...........
else{.........}
If语句时候要注意写{ }
简化格式简化代码书写但是造成代码可读性变差
简写格式什么时候用?
当if else运算后有具体结果时可以使用三目运算符替代
局部代码块可以节省内存空间 可以定义局部变量的生命周期
代码复用性 当多个条件对应一个结果时,可以将条件合并
选择结构:
switch表达式中的数据类型 byte short char int String enum
switch(表达式){
case 1:表达式1;break;
case 2:表达式2;break;
.........
}
switch多个对应关系
if和switch的应用
if:1.对具体的值进行判断
2.对区间判断
3.对运算结果是boolean类型的表达式进行判断
switch:1.对具体的值进行判断
2.值的个数通常是固定的
注意:对于几个固定的值判断,建议使用switch语句,因为switch语句会将具体的答案都加载入内存,效率相对高一些
循环结构的代表性结构有三个
(1)while() {......}
(2) do{.....} while()
(3) for(XX;XX;XX){.....}
do{}while() 特点无论条件如何循环体都要执行
for(表达式1;表达式2;表达式3){}
表达式2必须为boolean表达式
表达式1和3可以为任意表达式
for和while的区别
1. for和while可以互换
2. 格式上的不同,在使用上有点小区别
控制循环的变量for只在for范围内有效
无限循环最简单的形式
(1)while(true){}
(2)for(;;) for第二个表达式默认为true
什么时候使用循环结构
当对某些代码执行多次时,使用循环结构完成
什么时候使用if和while
(1)当对一个条件进行一次判断是,可以使用if语句
(2)当对一个条件进行多次判断是可以使用while语句
大圈套小圈思想:有一种重复的情况,每种情况对应其他的重复情况多次
其他的流程语句:
break:跳出
break作用范围:要么是switch语句,要么是循环语句
记住:当break语句单独存在时,下面不要定义其他语句,因为执行不到会编译错误
break跳出最近的循环
continue :继续
作用范围:循环结构
continue结束本次循环,继续下次循环
转义字符 \n 回车 \t 制表符 \b 退格 \r按下回车
Window系统中回车其实是有两个符号组成的 \r\n
Linux中回车符是 \n
练习:九九乘法表
for(int i = 1;i<10;i++){ //控制列数 for(int j =1;j<i+1;j++){ System.out.print(i+"*"+j+"="+j*i+"\t"); } //控制每行输完换行 System.out.println(); }