java小笔记持续更新中loading…
算术符一览表:
运算符 | 运算 | 栗子 | 结果 |
---|---|---|---|
+ | 正号 | +7 | 7 |
- | 负号 | n=7; -n | -7 |
+ | 加 | 7+7 | 14 |
- | 减 | 7-7 | 0 |
* | 乘 | 7*7 | 49 |
/ | 除 | 7/7 | 1 |
% | 取模 | 7%3 | 1 |
++i i++ |
自增(前):先运算后取值 自增(后):先取值后运算 |
a=2; b=++a; a=2; b=a++; |
a=2; b=3 a=3; b=2 |
–i i– |
自减(前):先运算后取值 自减(后):先取值后运算 |
a=2; b=–a; a=2; b=a–; |
a=1; b=1 a=1; b=2 |
+ | 字符串相加 | “xiao”+“ye” | xiaoye |
//与C中用法一样,int/int=int
double n1 = 10/4d; //2.5
double n2 = 10.0/4; //2.5
double n3 = 10/4; //2.0
//a%b=a-((int)a)/b*b 有小数运算结果是近似值
System.out.println(10%3); //1
System.out.println(-10%3); //-1
System.out.println(10%-3); //1
System.out.println(-10%-3); //-1
public class xiaoye{
public static void main(String[] args){
/*
作为表达式使用
++i:先自增后赋值
i++:先赋值后自增
*/
int i = 2;
int j = ++i; //i=i+1;j=i
int k = j++; //k=j;j=j+1
System.out.println("j="+j+'\t'+"k="+k);
}
}
j=4 k=3
public class xiaoye{
public static void main(String[] args){
int num1 = 9;
int num2 = 2;
System.out.println(num1<num2);
System.out.println(num1<=num2);
System.out.println(num1>num2);
System.out.println(num1>=num2);
System.out.println(num1==num2);
System.out.println(num1!=num2);
boolean flag = num1<num2;
System.out.println(flag);
}
}
false
false
true
true
false
true
false
==
不能写成赋值符号 =
&&
,短路或 ||
,取反 !
&
,逻辑或 |
,异或 ^
- 短路与 ‘&&’ :如果第一个条件结果为false,则第二个条件不会判断,最终结果为false,效率高
- 逻辑与 ‘&’:不管第一个条件的判断结果是真是假,第二个条件都要判断,效率低
- 开发中基本使用短路与 ‘&&’ ,效率高
public class xiaoye{
public static void main(String[] args){
/*
逻辑与& 短路与&&
*/
int num1 = 7;
int num2 = 1;
if(num2<5 && ++num1<20){
System.out.println("小椰1");
}
System.out.println("num2="+num2);
if(num1<5 & ++num2<20){
System.out.println("小椰2");
}
System.out.println("num2‘="+num2);
}
}
小椰1
num2=1
num2‘=2
- 短路或 || :如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高
- 逻辑或 | :不管第一个条件的判断结果是真是假,第二个条件都要判断 ,效率低
- 开发中基本使用短路或 | ,效率高
=:把等号右边赋值给左边
- 如果条件表达式为 true ,运算后的结果为表达式1;
- 如果条件表达式为 false ,运算后的结果为表达式2;
public class xiaoye{
public static void main(String[] args){
int num1 = 7;
int num2 = 1;
int res = num2>num1?num1++:num2--;
System.out.println(res);
System.out.println("num2="+num2);
System.out.println("num1="+num1);
}
}
1
num2=0
num1=7
可以赋值给接收变量的类型
(或可以自动转换)。
- 字母、数字、_或$组成。
- 数字不能开头。
- 不可以使用关键字和保留字,但是能包含关键字和保留字。
- Java中区分大小写,长度没限制。
- 标识符不能包含空格。
- 包名:多单词组成时所有字母都小写。
- 类名、接口名:多单词组成时,所有单次首字母大写。
- 变量名、方法名:第一个单词首字母小写,第二个单词开始每个单词首字母大写。
- 常量名:所有字母都大写。
- 二进制:0,1 满2进1,以0b或0B开头。
- 十进制:0-9,满10进1。
- 八进制:0-7,满8进1,以数字0开头表示。
- 十六进制:0-9及A(10)-F(15),满16进1,以0x或0X开头表示。此处的A-F不区分大小写,
n ∗ m p − 1 n*m^{p-1} n∗mp−1
将该数不断除以 n ,直到商为0,将每步得到的余数倒过来。不够字节的位补零。
- 将二进制每三位一组,转成对应的八进制数。
- 将二进制每四位一组,转成对应的十六进制数。
- 将八进制的每一位,转成对应的一个3位的二进制数。
- 将十六进制的每一位,转成对应的一个4位的二进制数。
public class xiaoye{
public static void main(String[] args){
int n = 34;
System.out.println(n+"的二进制是"+Integer.toBinaryString(n));
System.out.println(n+"的八进制是"+Integer.toOctalString(n));
System.out.println(n+"的十六进制是"+Integer.toHexString(n));
System.out.println(n+"的三进制是"+Integer.toString(n,3));
}
}
34的二进制是100010
34的八进制是42
34的十六进制是22
34的三进制是1021
- 二进制的最高位是符号位:0表示正数,1表示负数。
- 正数的原码、补码、反码都一样(正数三码合一)。
- 负数的反码:原码符号位不变,其他位取反。
- 负数的补码:它的反码+1。
- 0的反码、补码都是0。
- Java中没有无符号数,即Java中的数都是有符号的,
- 在计算机运算的时候,都是以补码的方式运算的。
- 当我们看运算结果的时候,要看他的原码。
Java中有7个位运算:
- 按位与 &:两个都为1,结果为1;否则为0。
- 按位或 |:两个都为0,结果为0;否则为1。
- 异或^:两个不同时,结果为1;否则为0。
- 取反 ~:0变1,1变0。
- 算术右移 >>:低位溢出,符号位不变,并用符号位补溢出的高位。n/2/2
- 算术左移<<:符号位不变,低位补0。n22
- 逻辑右移 >>>:也叫无符号右移,低位溢出,高位补0。
没有 <<<
。
public class xiaoye{
public static void main(String[] args){
//位运算
int n1 = -2&3;
/*
-2的原码:10000000 00000000 000000000 00000010
-2的反码:11111111 11111111 111111111 11111101
-2的补码:11111111 11111111 111111111 11111110
3的补码: 00000000 00000000 000000000 00000011
位运算: 00000000 00000000 000000000 00000010
结果原码:00000000 00000000 000000000 00000010 -> 2
*/
int n2 = ~2;
/*
2的原码: 00000000 00000000 00000000 00000010
取反: 11111111 11111111 11111111 11111101
补码减1: 11111111 11111111 11111111 11111100
原码: 10000000 00000000 00000000 00000011 -> -3
*/
System.out.println("n1="+n1);
System.out.println("n2="+n2);
}
}
n1=2
n2=-3
接着肝!趁机拉波小关注,嘻~