- 标识符
在程序中自定义一些名称。
由26个英文字母,数字,符号组(_$)组成。
定义合法的标识符规则:
a. 数字不可以开头
b.不可以使用关键字
Java严格区分大小写。
注意:在起名字的时候,为了提高阅读性,要尽量有意义。
包名:全部小写
类名接口名:多个单词,每个单词首字母大写
变量名和函数名:多个单词,第一个单词首字母小写,其他单词每个首字母大写
常量名:所有字母大写,多个单词是每个单词用下划线连接。 - 交换变量
第一种:容易理解。开辟空间
int temp = n;
n = m;
m = temp;
第二种:如果n和m的值非常大, 容易超出int范围,丢失精度。
n = n + m;
m = n - m;
n = n - m;
第三种:
n = n ^ m;
m = n ^ m; //(n ^ m) ^ m = n;
n = n ^ m; //n ^ (n ^ m) = m;
-
switch语句特点:
a. switch语句选择的类型有四种:byte, short, int, char(现在还有字符串,枚举)
b. case之间与default 没有顺序。先执行第一个case , 没有匹配的case执行default。
c. 结束switch语句有两种情况:遇到break, 执行到switch语句结束。
d. 如果匹配的case或者default 没有对应的break,那么程序会继续向下执行,执行可以执行的语句,知道遇到break或者switch结尾结束。 -
if和switch之间的选择:
如果判断的具体数值不多,而是符合byte, short, int, char这四种类型,虽然两个语句都可以使用,建议使用switch, 因为效率稍高。
其他情况:对区间判断,对结果为boolean类型的判断,使用if,if的使用范围更广。
int x = 0;
for(System.out.println("a"); x < 3; System.out.println("c"))
{
System.out.println("b");
x++;
}
输出abcbc
for(int i = 1; i <= 9; i++)
{
for(int j = 1; j <= i; j++)
{
System.out.print(j + "*" + i + "=" + i*j + "\t");
}
System.out.println();
}
输出:乘法口诀
for(int i = 1; i <= 5; i++)
{
for(int j = i; j <= 5; j++)
{
System.out.print("-");
}
for(int m = 1; m <= i; m ++)
{
System.out.print("* ");
}
System.out.println();
}
输出
-
函数重载和参数类型和个数有关,和返回值没有关系。
若两个函数除了返回值不同,其他都相同则报错。不能构成重载。 -
堆和栈:
堆需要JVM释放内存,栈自动释放内存。
堆内存中的数据自动初始化:0,0.0,0.0f,false; -
进制转换:
十进制——》二进制
public static void toBin(int num)
{
StringBuffer sb = new StringBuffer();
while(num > 0)
{
sb.append(num%2);
num /= 2;
}
System.out.println(sb.reverse());
}
查表法:
public static void toBin_table(int num) {
char[] chs = {'0', '1'};
char[] arr = new char[32];
int pos = arr.length;
while(num!=0) {
int temp = num & 1;
arr[--pos] = chs[temp];
num = num >>> 1;
}
for(int i = pos; i < arr.length; i++) {
System.out.print(arr[i]);
}
}
十进制——》十六进制
public static void toHex(int num) {
StringBuffer sb = new StringBuffer();
for(int i = 0; i < 8; i++)
{
int temp = num & 15;
if(temp > 9)
sb.append((char)(temp - 10 + 'A')); // 自动转换为int类型,所以强制转换为char
else
sb.append(temp);
num = num >>> 4; //无符号右移四位
}
System.out.println(sb.reverse());
}
查表法:将所有的元素临时存储起来,建立对应关系。
每一次&1111;后的值作为索引去查找建立好的表,就可以找到对应的元素。
这样比-10 + 'A';
简单一些。
public static void toHex_table(int num) // 用数组完成,StringBuffer使用还没学时
{
char[] chs = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F'};
char [] arr = new char[8];
int pos = arr.length;
while(num != 0){
int temp = num & 15;
arr[--pos] = chs[temp];
num = num >>> 4;
}
for(int i = pos; i < arr.length; i++)
System.out.print(arr[i]);
}
十进制转化为任何进制:
public static void trans(int num, int base, int offset)
{
if(num==0)
{
System.out.println(0);
return;
}
char[] chs = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F'};
char[] arr = new char[32];
int pos = arr.length;
while(num!=0)
{
int temp = num & (base - 1);
arr[--pos] = chs[temp];
num = num >>> offset;
}
for(int i = pos; i < arr.length; i++)
System.out.print(arr[i]);
}
基本数据类型:
byte(1字节)
short(2字节)
int(4字节)
long(8字节)
float(4字节)
double(8字节)
char(2字节)
boolean
基本数据类型隐式转换:
byte -> short -> int ->long -> float -> double
常量:
字符串常量,整数常量,小数常量,字符常量,布尔常量,null
一般的:整数(常量)默认为int类型,小数(常量)默认为double
定义long型变量,最好直接加上L。
定义float型变量,最好直接加上F。
逻辑运算符:用于连接关系表达式
&,|,^,!
&&,|| (相比较与&,|效率要高一些,具有短路效果)
二元运算符得运算规则:
整数运算:
- 如果两个操作数有一个为Long,则结果也为Long.
- 没有Long时,结果为int。即使操作数全为short,byte,结果也是int。
- 整数默认为int类型。
浮点运算: - 如果两个操作数有一个为double,则结果为double。
- 只有两个操作数都是float,则结果才为float。
- 浮点数默认为double类型。
byte a = 1;
byte c = 2;
byte b = (byte)(a+c);
或者
byte a = 1;
byte c = 2;
int b = a+c;
但是不可以这样
byte a = 1;
byte c = 2;
byte b = a+c;