java查漏补缺
java特点:
跨平台:程序员写的是.java文件,javac指令编译会得到.class文件;java指令运行,可以在不同系统下jvm中运行。
jdk
包含jre
jre:java运行环境,等于jvm+java核心类库
运行
当编写完一个类后会产生.java文件,cmd中可以javac 类.java会产生.class文件;然后java 类名(不需要类.class)就可以执行代码了。
.java叫源文件,.class叫字节码文件。通过java.exe会将.class文件装载到jvm中。
2.基础
2.1前提
\t:一个制表位
\n:换行符
\\:一个\
\":一个"
\':一个'
\r:一个回车;会将后面的字替换前面的字
文档注释
author:作者,version:版本
dos
md:创建文件,rd:删除文件;dir:查看
cd /D c::切换到c盘;cd..:切换上一级;cd\:切换到根目录
cd ..\..\xx:切换到当前盘的其他目录下
tree c\::查看c盘目录
cls:清屏;exit:提出dos
相对路径、绝对路径
相对路径:…\代表文件的上一级
绝对路径:d:\xx\xx
2.2变量
结构:数据类型 变量名=数据
char:字符型’x’;String:“x”
+的作用
"100"+98+4结果为100984
运算是从左到右,左边计算如果遇到""后面就为字符串拼接
2.2.3整型
一个字节=8个bit;有一个bit要作为正负。
输入的数默认为int类型;long型常量后面要加l或L
2.2.4浮点
默认double,用float后面要加f/F;float是近似值不精准。
1.1e2:1.1乘以10的2次方;1.1E-2:1.1除以10的2次方;
浮点数除法时是近似值,差值非常小可以让他们相等。
如果是0.1f,0可以省略。
2.3java api
网址:matools.com
2.4char
表示单个字符,两个字节,可以存放汉字;
char b=‘a’;输出的是a;(int)b会输出a对应的数字。
如果是char a=97;输出的是97代表的字母a;有各种编码表。
本质:
字符型存储到计算机:'a’的码值97,97对应的二进制存储到计算机。
2.5boolean
1个字节;只有true、false。
2.6类型转换
自动类型转换:精度小的自动转换为精度大的。
在计算时,系统自动会将所有数据转换为容量最大的那种类型。
char-int-long-float-double;
byte-short-int-long-float-double;
byte/short和char之间不会相互转换,计算时先全部转换为int类型。
强制类型转换:容量大的转换为容量小的,可能会造成精度降低或溢出。
细节:强转只针对最近的计算,需要小括号提升优先级
char可以保存int的常量值,但不能保存int的变量值,需要强转。
2.7基本数量类型与string转换
基本数量类型转string:基本+“”
string转基本:通过基本类型的包装类调用parsexx方法;例Integer.parseInt(“111”)
字符串转字符:是把字符串的第一个字符得到;例x.charAt(0)。
2.8运算符
2.8.1算数
a=2;b=++a;a=3,b=3。
a=2;b=a++;a=3,b=2。
注意:
10/2:输出是2;如果用double接收是2.0;
a%b=a-a/b*b;
i=1;i=i++;输出i为1:1.t=i;2.i++;3.i=t。
i=1;i=++i;输出i为2:1(1)i=i+1;(2)t=i;(3)i=t。
2.8.2逻辑
&&与&区别:
&&:如果第一个条件为false,第二个条件不会判断,结果为false,效率高。
&:两个都会判断
||同理
注意:复合赋值运算符会进行类型转换
byte b=3;b+=2;等价于b=(byte)(b+2)
2.9输入
util包下scanner
new Scanner(System.in);然后调用他的.next()方法接收字符串数据。
nextInt();int类型数据
2.10进制
二进制:0b/0B开头
八进制:0开头
十六进制:0x/0X开头
转换:不断除直到0,然后将余数倒过来
二进制到八进制、十六:将二进制每3位一组、每4位一组
八进制转二进制:将每一位转为3位的二进制;十六进制同理
2.11位运算
原码,反码,补码
1.最高符号位:0位正,1为负
2.正数的原码,反码,补码都一样
3.负数的反码=原码符号位不变,其他取反
4.负数的补码=反码+1
5.计算机运算时以补码运算
6.看运算结果时,看原码
>>:右移相当于除2,左移相当于乘2
2&3:2,先得到2、3的补码,再&运算结果转换为十进制
3.控制结构
if;if(){}else{}
switch(表达式){
case 常量1:语句
break;
…
default:语句
break;
}
注意:
1.switch的表达式必须是byte,short,int,char,enum,String
2.case子句的值必须是常量
3.表达式与case类型要一致或者可以互相转换
4.default可以没有
5.没写break,程序会顺序执行到switch结尾