Java基本语法 上
关键字和保留字
可以直接理解为专门用途的单词。例如 变量类型,流控制,权限修饰符。 大概常用的有这么多。不必记,有助于关键字的理解。自己命名变量时要避开和关键字重复。
标识符(Identifier)
标识符就是给变量,方法,类取的名字。但是标识符有需要注意的点:1.由英文数字还有下划线和$组成;2.数字不能开头;3.不能有空格;4.不能和关键字保留字重复;5大小写严格区分,长度无限。
标识符命名规范
包名全部单词小写。类和接口所有单词首字母大写。变量和方法第一个单词小写后面单词首字母大写。常量全部单词大写且用下划线_连接。
变量
变量必须先声明后使用,变量在他存在的{}中作用,变量在作用域内定义完就不能重定义了。
基本数据类型
注意:字符串String是类。
不同变量占用的空间不同 byte 1字节,char,short 2字节,int 4字节,float单精度 4字节,double 双精度 8字节,long 8字节。
声明long变量,变量必须要以小写l或者大写L结尾。例如 long phoneNumber=123456789L;
定义float变量时必须以f或者F结尾,例如 float length=31.5f;但是double不用这样,更加方便。
定义char类型变量通常使用单引号例如char c1=‘a’; 字符只能写一个字符。GBK输出中文, UTF-8输出英文,命令行默认UTF-8格式。GBK和UTF-8不能混用。将java文件编码的时候另存为ANSI就能输出中文。
//java variables definition
int num=4;
long= 12345678L;
float rate=0.8f;
double rate2=1.2;
char c1='a';
char c2='中';
char c3='\n';
char c4='1';
char c5='\u0043'; //Unicode编码
boolean isMarried=true; //只能取 true 和 false。
基本数据类型变量之间的转换
不考虑 boolean 类型因为只能取true和false。
1.自动类型提升:
容量小的数据类型和容量大的数据类型结果自动提升为容量大的类型。容量大小表示数的范围的大小。
byte、char、 short–> int–> long–> float–> double
当byte、char、short 三种类型做运算时,结果为int类型。
byte b1=2; int i1=129;char c1='a';
int i2=b1+i1;
float f1=b1+i1;
int i3=i1+c1;
2.强制类型转换:自动类型提升运算的逆运算,容量大的变成容量小的变量。需要使用强转符号 ();
double d1=12.3;
int i1=(int)d1; //截断操作,向下取整,损失精度
基本数据类型变量与String间的转换
String 不是基本数据类型,属于引用数据类型。使用方法如下。字符串可以连接其他字符串,也可以连接其他数据类型
String str = "abcd"; str2="";//空字符串
str=str+"xyz"; // + 表示连接运算
int n=100;
str=str+n;
进制与k进制间的转换
int num1= 0b110; //二进制 以0b或0B开头
int num2= 110; //十进制
int num3= 0110; //八进制 以0开头
int num4= 0x110; //十六进制 以0x或0X开头
先将K进制转换成10进制 number=
k
n
−
1
∗
b
n
−
1
+
.
.
.
+
k
1
∗
b
1
+
b
0
k^{n-1}*b_{n-1}+...+k^{1}*b_{1}+b_0
kn−1∗bn−1+...+k1∗b1+b0。再将 number用短除法变为 m进制。
b
1
=
n
u
m
b
e
r
/
m
+
q
1
b_1=number/m+q_1
b1=number/m+q1
b
2
=
n
u
m
b
e
r
/
m
+
q
2
b_2=number/m+q_2
b2=number/m+q2
…
b
n
−
1
=
n
u
m
b
e
r
/
m
+
q
0
b_{n-1}=number/m+q_0
bn−1=number/m+q0
number=
m
n
−
1
∗
b
n
−
1
+
.
.
.
+
m
1
∗
b
1
+
q
0
m^{n-1}*b_{n-1}+...+m^{1}*b_{1}+q_0
mn−1∗bn−1+...+m1∗b1+q0则转换为 m进制
b
n
−
1
.
.
.
b
1
b
0
b_{n-1}...b_{1}b_0
bn−1...b1b0
二进制转 2 k 2^k 2k进制,只需把k位二进制组合解码 则最后得到的结果为 新的进制。
原码、反码和补码
A的反码为A的原码 符号不变 各位取反,A的补码为A的反码+1。
运算符
包含算术运算符,赋值运算符,关系运算符,逻辑运算符,位运算符,三元运算符。
算术运算符
赋值运算符
s=s+2;编译无法通过,表示累加要用s+=2;
比较运算符
逻辑运算符
&和&&的区别,当&前面的部分已经能决定整个逻辑表达式的true或false则后面也会执行,但&&不会执行后面的部分。| 和 || 原理一样。当符号左边可以决定逻辑表达式,则 || 后面不会执行后面。开发中推荐使用&&和||
位运算符
三元运算符
(条件表达式)?表达式1:表达式2。条件表达式为true则执行表达式1否则执行表达式2.