Java语言基础2:各种运算符
1、在定义Long 类型或者Float 类型变量的时候,要加 L 或者 F。
整数的默认类型是int 类型,浮点数的默认类型是double 类型。
byte 和short 在定义的时候,它们接收的其实是一个int 类型的值。这个是自己做了一个数据检测的,如果不在它们的范围内,就会报错。
2、运算符:运算符就是 对常量和变量进行操作的符号。分为6种。
分别是 算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、三目运算符。
3、算术运算符
+ - * / % ++ --
(1)基本操作
class OperatorDemo {
public static void main(String[] args) {
int x=3;
int y=4;
System.out.println(x+y);
System.out.println(x-y);
System.out.println(x*y);
System.out.println(x/y);
System.out.println(x*1.0/y);
System.out.println(x%y);
}
}
(2)整数相除只能得到整数。要想得到小数,只需要把操作数中的数据任意一个数据转变为浮点数。
例如:System.out.println(x*1.0/y);
(3)/ 获取的是除法操作的商 % 获取的是除法操作的余数。
(4)++和--的作用是:对变量(不能是常量)进行自增1和自减1。
单独使用:++ 和-- 单独使用时,放在变量的前面和后面效果是一样的。
参与运算使用:放在操作数的前面,先自增或者自减,然后再参与运算。放在操作数的后面,先参与运算,再自增或者自减。
class OperatorDemo {
public static void main(String[] args) {
int x=3;
int y=4;
//字符串的拼接
System.out.println("x:"+x);
System.out.println("y:"+y);
System.out.println("x:"+x+",y:"+y);
//自增++ 自减-- 的操作
//单独使用:
x++;
y--;
System.out.println("x:"+x);
System.out.println("y:"+y);
//参与运算使用:
int a=3;
int b=4;
//int c=a++;
//int d=b--;
int c=++a;
int d=--b;
System.out.println("a:"+a);
System.out.println("b:"+b);
System.out.println("c:"+c);
System.out.println("d:"+d);
}
}
(5)题目考验:System.out.println("A:"+A+",B:"+B); 6/70
(6)注意:+ 的作用有三个:加法、正号、字符串连接符。
System.out.println(3+4);
System.out.println(+4);
System.out.println('a'); //a
System.out.println('a'+1); //98
System.out.println("hello"+'a'+1); //自左向右运算:helloa1
System.out.println('a'+1+"hello"); //自左向右运算:98hello
4、赋值运算符
= , +=, -=, *=, /=, %=
= 为基本的赋值运算符,其他的为扩展的赋值运算符
如下操作写出结果:
int a,b; a = b = 10; System.out.println(a); System.out.println(b);
int a = 10; a += 20; System.out.println(a);
面试题:
short s=1;s = s+1; (错。把int类型的赋值给short类型:可能损失精度)
short s=1;s+=1; (对。因为扩展的赋值运算符隐含了一个强制类型转换!)
s+=1 等同于:s=(s的数据类型)(s+1);
上面两个代码有没有问题,如果有,哪里有问题?
5、比较运算符
== != > < >= <= instanceof
6、逻辑运算符
(2)逻辑与 &:有false 则false。 逻辑或 |:有 true 则true。 逻辑异或 ^:相同为false,不同为true。逻辑非 !:若假则为true,若真则为false,偶数个!不改变本身,奇数个!则改变。
(3)双与 && 有短路性质。双或 || 有短路性质。开发中常用的是:&& || !
7、位运算符
(1)^ 的特点:某一个数据对另一个数据异或两次,该数本身不变。a==a^b^b;
(2)实现两个整数变量的交换:
1)使用第三方变量实现(开发中就这样使用的!)。
2)使用为异或实现(面试时候用!)。
3)用变量相加实现。
4)一句话搞定。
//交换两个数值:
int a=10;
int b=20;
//使用第三方变量实现
int c=a;
a=b;
b=c;
//使用位异或实现
a=a^b;
b=a^b;
a=a^b;
//使用变量相加实现
a=a+b;
b=a-b;
a=a-b;
//一句话搞定
a=(a+b)-(a=b);
(3)<< 是指:把<< 左操作数乘以 2的移动次幂。>> 是指:把>> 左操作数 除以 2的移动次幂。
8、三目运算符
计算最大值:
int max=(a>b)?( ( a>c ) ? a : c ):( ( b>c ) ? b : c );
9、键盘录入的基本格式讲解:三步走。
(1)导包。
格式:import java.util.Scanner;
位置:在class上面。
(2)创建键盘录入对象。
格式:Scanner sc=new Scanner(System.in);
(3)通过对象获取数据。
格式:int x=sc.nextInt();
/*
为了让程序的数据更符合开发的数据,我们就加入了键盘录入。
让程序更灵活一下。
那么,我们如何实现键盘数据的录入呢?
A:导包
格式:
import java.util.Scanner;
位置:
在class上面。
B:创建键盘录入对象
格式:
Scanner sc = new Scanner(System.in);
C:通过对象获取数据
格式:
int x = sc.nextInt();
*/
import java.util.Scanner;
class ScannerDemo {
public static void main(String[] args) {
//创建键盘录入数据对象
Scanner sc = new Scanner(System.in);
System.out.println("请你输入一个数据:");
int x = sc.nextInt();
System.out.println("你输入的数据是:"+x);
}
}
/*
练习:
键盘录入三个数据,获取这三个数据中的最大值
键盘录入两个数据,比较这两个数据是否相等
*/
import java.util.Scanner;
class ScannerTest3 {
public static void main(String[] args) {
//键盘录入三个数据,获取这三个数据中的最大值
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数据:");
int a = sc.nextInt();
System.out.println("请输入第二个数据:");
int b = sc.nextInt();
System.out.println("请输入第三个数据:");
int c = sc.nextInt();
//获取这三个数据中的最大值
int temp = ((a > b)? a: b);
int max = (temp > c? temp : c);
System.out.println("max:"+max);
System.out.println("------------------");
//键盘录入两个数据
System.out.println("请输入第一个数据:");
int x = sc.nextInt();
System.out.println("请输入第二个数据:");
int y = sc.nextInt();
//比较这两个数据是否相等
boolean flag = (x == y);
System.out.println("flag:"+flag);
}
}