今天是Java基础学习第二天,加油!!!下面是我今天记的一些笔记。(有点懒惰了,爬虫今天没学,因为赖床了(bushi),但我会勤奋起来的^_^,一定一定!明天不能偷懒了 天!!)
一、运算符
例子:
int a = 10;
int b = 20;
int c = a + b;
其中,“+”是运算符,且是算术运算符;“a + b”是表达式,且是算术表达式。
1.算术运算符
例1:
public class demo3 {
public static void main(String[] arg) {
//+
System.out.println(3 + 7);
//-
System.out.println(8 - 2);
//*
System.out.println(3 * 7);
//运算时有小数参与运算,结果可能不精确
System.out.println(1.1 + 1.1);//2.2
System.out.println(1.02 + 1.1);//2.12
System.out.println(1.1 + 1.01);//2.1100000000000003
//除法(取商)
//整数参与计算,结果得到整数
//小数参与,结果可能不精确,精确计算在后续学习中
System.out.println(8 / 2);//4
System.out.println(10.0 / 3);//3.3333333333333335
//取余,取模
System.out.println(8 % 2);//0
System.out.println(8 % 3);//2
}
}
例2,拆分数字:
//拆分数字
Scanner sr = new Scanner(System.in);
System.out.println("请输入数字:");
int a = sr.nextInt();
System.out.println("个位数:" + (a % 10));//个位数:3
System.out.println("十位数:" + ((a / 10) % 10));//十位数:2
System.out.println("十位数:" + (((a / 10) / 10) % 10));//十位数:1
【1】类型转换
*隐式转换:取值范围小转为大的数据(转成一样的才能计算)
规则:#小的变成大的,再开始运算
#byte,short,char,运算时直接提为int,再计算
注: byte->short->int->long->float->double(取值范围最大)
*强制转换:如果想将取值范围大的转为小,此时需要强制转换
格式:目标数据类型 变量名 = (目标数据类型)被强转的数据
例1:
double a = 12.3;
int b = (int)a;
【2】字符串“+”操作(拼接操作)
*是字符串连接符,将前后数据拼接
*连续“+”,从左到右逐个执行
如,“1”+“99”+“9年” => "1999年"
【3】字符“+”操作(涉及ASCII码)
*ASCII码(往后加1):
a : 97 A : 65
例1:
System.out.println(3 + 'a');//100
System.out.println('a' + "sdcx");//asdcx
2.自增自减运算符(++,--)
*单独写一行,放在变量前后,结果都一样。
*另一个,代码例子:
int z = 10;
//++在变量后面,会先将z值赋给s,z再自增
//则s=10,z=11
int s = z++;
//++在变量前面,z先自增,z=12,再赋值给d
int d = ++z;
System.out.println("z:"+z);//12
System.out.println("s:"+s);//10
System.out.println("d:"+d);//12
3.赋值运算符
a += b; ==> a = a + b;//(其他的以此类推)
4.关系运算符(结果为boolean类型)
== != > >= < <=
例1:
Scanner sr = new Scanner(System.in);
int p1 = sr.nextInt();
int p2 = sr.nextInt();
boolean result = p1 > p2;
System.out.print(result);
5.逻辑运算符(可以联想到一些数学知识)
【1】逻辑运算符
& (逻辑且,两边都要运行)
| (逻辑或,两边都要运行)
^ (逻辑异或,同false,不同true)
! (逻辑非,取反)
(补,其他运算符:
<< 向左移动,低位补0,如00001100<<2 ==>> 00110000
>> 向右移动,高位补0或1
>>> 向右移动,高位补0)
【2】短路运算符(常用:&&,||,!)
* && (短路与,都真为真,左边是false,右边无论真假都不会运行,整个结果一定false)
* || (短路或,都假为假,左边是true,右边无论真假都不会运行,整个结果一定true)
例1,练习:
Scanner sr = new Scanner(System.in);
int p1 = sr.nextInt();
int p2 = sr.nextInt();
System.out.print((p1==6||p2==6)||((p1+p2)%6==0));//true,false
6.三元运算符
*格式:关系表达式?表达式1:表达式2;(true,进行1;false,进行2)
范例,获取较大值:
int max = a > b ? a : b;
System.out.print(a > b ? a : b);
例1,是否相同:
Scanner sr = new Scanner(System.in);
int p1 = sr.nextInt();
int p2 = sr.nextInt();
System.out.print(p1 == p2 ? "相同" : "不同");
例2,选出最大值:
Scanner sr = new Scanner(System.in);
int p1 = sr.nextInt();
int p2 = sr.nextInt();
int p3 = sr.nextInt();
int max = p1 > p2 ? p1 : p2;
int max2 = p3 > max ? p3 : max;
System.out.print(max2);
8.原码,反码,补码(这网课听得我梦回之前上的计算机组成课,重新记一下吧,反正有点忘了)
*原码:十进制数据的二进制表现形式,最左边是符号位,0正,1负
如:56 ==>> 0 0111000
最大值:01111111 +127
最小值:11111111 -127
*反码:正数反码不变,负数的反码在原码基础上,符号位不变。数值取反,0变1,1变0。
如:-56 原码 ==>> 1 0111000
反码 ==>> 1 1000111
*补码:正数补码不变,负数的反码在补码基础上,符号位不变。数值取反,0变1,1变0,得到反码,最后末尾加1。
如:-101 原码==>>1101 反码 ==>> 1010 补码 ==>> 1011
今天就这样结束吧(确实摸鱼了bushi),明天我会补上的☹☹☹
好像要下雨了,太好了,这几天我要热“死”了,差点变成干(开玩笑)