1.结构定义语句和功能执行语句的概念
class Test{
public static void main(String[] args){//这个代码结构定义语句 {}括号标识
int x=30;//这个代码功能执行语句 用;来结尾
while(true){//结构定义
if(){//结构定义
x=50; 功能执行
System.out.println(x);//功能执行
}
}
}
}
2. 常量和变量 概念
System.out.println("常量");//这就是常量 常量不可变
被 public static final 声明的 变量也是常量
/ 在程序中被称作为转义字符 /r/n 一半一起用 表示回车换行 /b 退格键 /t 制表符(八位算一个单位)
>> 变量
int x=5; 这个x就是变量 //局部变量在声明的时候必须初始化 否则会报错
>>变量的类型 分为基础类型(4类八种) 和引用类型(除了基本类型都是)
>> 类型自动提升byte,short,char在参与运算之后, 会自动提升为int
>>强制转换类型 就是大的变小的 会损失精度
byte b= 1+1;//会报错 因为1+1自动提升为int 当想把int变成byte的时候需要强制类型转换
byte b=(byte)1+1;
>> 字符串相加 :任何值与字符串相加都得字符串
3. 函数(方法)的概念
定义一个函数需要三步走 第一给函数个名字 第二你想让函数给你做什么(返回值类型) 第三 如果函数没有 你给他点材料 让他用用呗(参数列表)
重载(overload)的概念: 方法名字相同 参数列表不同 个数不同 顺序不同 注意: 跟返回值类型没有一点关系
4.运(晕)算符 不是特别重要 但是了解
i++ 和 ++i 的区别
i++是 先取值 在运算
++i 先自增1.在取值
& 想象成交集 两true &才true && 短路 如果前面正确 后面就不知心了
| 想象成并集 有true |就true ||短路 如果前面 正确 后面就不执行了
! 你想怎样 就不怎样
^ 一男一女 就是true 两个男的 两个女的就是 false; 一个数异或另一个数两次还得自
身
d).>> 右移, 将二进制的每一位向右移动, 低位忽略, 高位以前是0就补0, 以前是1就补1.
e).>>> 无符号右移, 将二进制的每一位向右移动, 低位忽略, 高位补0.
f).<< 左移, 将二进制的每一位向左移动, 高位忽略, 低位补0.
5.两个数字交换 不用第三个中间变量
int x=5;
int y=10;
x=x^y; x=5^10;
y=x^y; y=5^10^10=5;
x=x^y; x=5^10^5=10
x=x+y; x=5+10=15;
y=x-y; y=15-10=5;
x=x-y; x=15-5=10;
骨灰版
x = y ^ (y = x) ^ x;
x = y + (y = x) - x;
// System.out.println("/u0028");//一个特殊的字符
int x=198;
int y=0;
StringBuffer sb=new StringBuffer();
while(x>0){
y=x%2 //y=x&01;//两个是等价的
x=x/2;
sb.append(y);
}
System.out.println(sb.reverse());
int x=198;
int y=0;
StringBuffer sb=new StringBuffer();
while(x>0){
y=x&0xf;// y=x%16;
if(y<10){
sb.append(y);
}else {
sb.append((char)('A'+(y-10)));
}
x=x/16;
}
System.out.println(sb.reverse());
由此可以推出 一个 数的取余 就相当于 一个 & 它需要取余的数 减一; 例子 8%5 相当于 8&(5-1)
20%16=4
00010100
00001111 代表15 0xf
_________
00000100
为什么要取最低的4位 因为最低的4位表示这个数不满16的部分
20%8=4
00010100
00000111 代表 7 07
________
00000100
这个取最低的3位 表示不满 8的部分
return 表示 返回 当前的方法 下面的语句不再执行
重载的理解
public static void main(String[] args){
int a=run(5,9);
System.out.println(a);
run(6);
}
public static void run(int i){
System.out.println("我是无惨构造");
}
//这个算重载 重载不关心返回值类型
public static int run(int i,int j){
return i+j;
}
//不算重载 因为参数列表相同 和返回值无关 重载只关心 参数列表 和方法名字 不关心返回值类型
public static double run(int i){
return i+0.01;
}
i++ 和++i 遗留的问题
public class Test{
public static void main(String[] args){
int i=0;
//System.out.println(i++);// 先取值 后 运算 现在的i++ 是0 不过已打印就是1
System.out.println(++i); 现在的++i就是 1 打印还是1 先运算后取值
System.out.println(i);
}
}