java标识符
其实就是在程序中自定义的一些名称,由英文字母,数字,_和$组成,不能以数字开头,不能使用关键字,严格区分大小写
main不是关键字,JVM把它当做程序的入口
java命名规范:
包名:多单词组成时所有字母都小写 xxxyyyzzz
类名接口名:多单词组成时,第一个单词首字母小写,以后每个单词首字母大写 xxxYyyZzz
常量名:所有字母大写,多单词组成时,每个单词之间用_连接 XXX_YYY_ZZZ
常量表示不能改变的数值
java中常量的分类:
1.整数常量.所有整数
2.小树常量.所有小数
3.布尔型常量.true false
4.字符常量.将一个数字,字母或者符号用单引号('')标识
5.字符串常量.将一个或者多个字符用双引号标识
6.null常量.null
进制:
对于整数:java有三种表现形式
十进制:0-9
八进制:0-7,满8进1,用0开头表示
十六进制:0-9,A-F,满16进1,用0x开头表示
计算机内的数据都是用二进制存储的
一个字节是由8个二进制位组成,所以一个字节最大就是255
用01的不同排列组合代表生活中的数据
比如:010...001----代表A
就形成了编码表,ASCII,GBK,gb2312
二进制的表现形式太长,太繁琐,为了更方便的表示数据
于是,把二进制中的数据,3位代表1位,这样出现了八进制,可是还是太长
于是,把二进制中的数据,4位代表1位,这样出现了十六进制.
十进制转二进制:
"除2取余,逆序排列"
用2去除十进制的数,得到一个商和余数,再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,把余数到过来写
二进制转十进制
转化成十进制要从右到左用二进制的每个数去乘以2的相应次方,不过次方要从0开始
例如:13的二进制是1101
转换十进制就是:1*2的3次幂+1*2的2次幂+0*2的1次幂+1*2的0次幂
八进制和十六进制转换,都是先将十进制转成二进制,在分别3位表示一位,4位代表一位
负数二进制:
正数的二进制取反+1
变量:就是将不确定的数据进行存储,需要在内存中开辟空间
通过1.明确数据类型 2.变量名称 3.数据 来完成开辟空间
byte b = 2;//-128~127;
byte b1 = 128;//报错
short s = 30000;
long l = 3l;//加一个L标识一下
float f = 2.3;//编译报错,小数默认都是double型的,整数默认是int类型
float f1 = 2.3f;//加f标识一下,标识单精度的小数
char ch = '4';//单引号
char c = '我';//一个汉字是两个字节,
类型转换:
byte b = 3;
b = b+2;
System.out.println(b); //编译报错,
b = (byte)(b+2); //强制类型转换
b+=2; //
System.out.println('a'+1); //=98,char类型可以进行运算的,ASCII编码表中有对应的数字,所有系统都支持ASCII表
java运算符:
1.算术运算符
+, -, *, /, %(取模), ++, --, +(字符串相加,字符串数据和任何数据使用+都是相连接,最终都会变成字符串)
2.赋值运算符
=, +=, -=, *=, /=, %=
int a,b,c;
a=b=c=5; //编译通过
short s = 4;
s = s + 2; //编译报错,s会被提升为int类型
s+=2; //编译可以通过,+=是一次运算,它在给s赋值时,会自动完成强制类型转换动作
3.比较运算符
运算后的结果是boolean型,true或false
==, !=, <, >, <=, >=, instanceof(检查是否是类的对象)
4.逻辑运算符
用于连接boolean类型的表达式,运算后的结果也是boolean类型的值
& (AND与): false&false --> false 两边都为true,结果为true,有一个为false,就为false
| (OR或): false|true -->true 两边都为false,结果为false,有一个为true,就为true,
^ (XOR异或): true^false -->true 两边相同结果为false,两边不同位true
! (Not非): !true -->false
&& (AND短路与):false&&false -->false
|| (OR短路或): false||true -->true
5.位运算符
位运算是直接对二进制进行运算,是最快的运算
<< (左移):其实就是乘以2的移动的位数次幂
例如:3<<3-------->=3*2的3次幂
把3的二进制数,向左移3位,右边补0;左移变大
2*8 2<<3
>> (右移):就是除以2的移动的位数次幂
例如:6>>2-------->=6/2的2次幂
把6的二进制数,想右移2位,正数,左边补0;负数,左边补1;右移变小
>>>(无符号右移):
例如:6>>>2
把6的二进制数,向右移2位,不管正还是负数,左边都补0
& (与运算):
例如:6&3 0代表false,1代表true
0000-0000 0000-0000 0000-0000 0000-0110
&0000-0000 0000-0000 0000-0000 0000-0011
--------------------------------------------------------------
0000-0000 0000-0000 0000-0000 0000-0010 =2
| (或运算):
例如:6|5
0000-0000 0000-0000 0000-0000 0000-0110
|0000-0000 0000-0000 0000-0000 0000-0101
---------------------------------------------------------------
0000-0000 0000-0000 0000-0000 0000-0111 =7
^ (异或运算):
例如:6^5
0000-0000 0000-0000 0000-0000 0000-0110
^0000-0000 0000-0000 0000-0000 0000-0101
--------------------------------------------------------------
0000-0000 0000-0000 0000-0000 0000-0011 =3
一个数异或同一个数两次还是第一个数(6^5^5 = 6)
互换两个整数的值(不借助第三方变量)
int m = 8,n = 3;
1. 如果m和n的值非常大,容易超出int范围
m = m + n; 11 = 8 + 3;
n = m - n; 3 = 11 - 8;
m = m - n; 8 = 11 - 3;
2.
m = m^n;
n = m^n; // (m^n)^n
m = m^n; // n^(n^m)
~ (反码):
例如:~6
~0000-0000 0000-0000 0000-0000 0000-0110
--------------------------------------------------------------
1111-1111 1111-1111 1111-1111 1111-1001 =-7
6.三元运算符
if else 结构 简写格式: 变量 = (条件表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1
如果条件为false,运算后的结果是表达式2;
好处:可以简化if else代码。
弊端:因为是一个运算符,所以运算完必须要有一个结果。
java转义字符: 通过\ 来转变后面字母或符号的含义
八进制转义序列:\ + 1到3位5数字;范围'\000'~'\377'
\0:空字符
Unicode转义字符:\u + 四个十六进制数字;0~65535
\u0000:空字符
\b:退格,相当于backspace
\t:制表符,相当于tab键
\n,换行
\r,回车,相当于Enter,windows系统,回车符是由\r\n两个字符表示
\f:走纸换页
\':单引号
\":双引号
\\:反斜杠
点的转义:. ==> u002E
美元符号的转义:$ ==> u0024
乘方符号的转义:^ ==> u005E
左大括号的转义:{ ==> u007B
左方括号的转义:[ ==> u005B
左圆括号的转义:( ==> u0028
竖线的转义:| ==> u007C
右圆括号的转义:) ==> u0029
星号的转义:* ==> u002A
加号的转义:+ ==> u002B
问号的转义:? ==> u003F
反斜杠的转义: ==> u005C