java基础语法
一.运算符
。算术运算符
。赋值运算符
。比较运算符
。逻辑运算符
。位运算符
。三目运算符
-
、算术运算符
算术运算符
。+,-,*,/都是比较简单的操作
。+的几种作用
。加法
。正数
。字符串连接符
。除法的时候要注意一个问题:
。整数相除,只能得到整数
。要想得到小数,可以*1.0
。/和%的区别
。单独使用效果相同
。参与运算时,在操作数的前后效果不同
-
.关系运算符
。注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。
。注2:比较运算符“==”不能误写成“=”
-
、逻辑运算符
注意:
逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
-
、位运算符
位运算符 | ||
运算符 | 运算 | 范例 |
<< | 左移 | 3<<2=12 -->3*2*2=12 |
>> | 右移 | 3>>1=1 -->3/2=1 |
>>> | 无符号右移 | 3>>>1=1 -->3/2=1 |
& | 与运算 | 6&3=2 |
| | 或运算 | 6|3=7 |
^ | 异或运算 | 6^3=5 |
~ | 反码 | ~6=-7 |
。注:**位运算是直接对二进制运算
<<低位补0,移除的高位丢掉
>>高位补符号位,移除的低位丢掉
例:因为正数的原码反码补码相同所以在此以一个负数为例(在计算机中用补码进行运算,完成后再转为相应的原码)
byte x = -32;
byte y = (byte)(x>>2);
System.out.println(y);
答:原码:1010 0000
反码:1101 1111
补码:1110 0000
右移2位:1111 1000
补码转原码(取反加1):1000 1000
结果:-8
在此说一个下原码补码之间的转换
正数原码补码反码相同
负数原码转补码:原码除符号位转反码再加一
负数补码转原码:反码除符号位取反再加一
。>>>和>>的区别:
都是右移,仅仅在与>>>高位补0,而>>高位补符号位。
&:任何二进制位和0进行&运算,结果是0;和1进行&运算,结果是1.
|:任何二进制位和0进行|运算,结果是原值;和1进行|运算,结果是1。
^:任何相同二进制位进行^运算,结果是0;和1进行^运算,结果是1。
简单记法:
&:有0则0
|:有1则1
^:相同则0,不同则1
~:按位取反 0变1 1变0
。位异或运算符的特点
一个数据被另一个数据位异或两次,该数本身不变
a=a^b;
b=a^b;
a=a^b;
结果:a和b交换;
b=a(a^b)^b=a
a=a(a^b)^b(a)=b
-
、三目运算符
。格式:
(关系表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
。示例:
判断两个数是否相等
Int a=7,b=9,z
Boolean z=(a==b)?true:false
-
键盘录入数据
。键盘录入数据概述
我们目前在写程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的,所以,我准备把数据改进为键盘录入,提高程序的灵活性。
。如何实现键盘录入数据呢?
导包(位置放到class定义的上面)
import java.util.Scanner;
创建对象
Scanner sc = new Scanner(System.in);
接收数据
int x = sc.nextInt();
三.例子
、使用三元运算符完成如下练习(数据来自于键盘录入)
比较两个数是否相等
获取两个数中最大值
获取三个数中最大值
代码:
import java.util.Scanner;
class forth
{
public static void main(String[] args)
{
System.out.println("请输入第一个数");
Scanner sa=new Scanner(System.in);
int a=sa.nextInt();
System.out.println("请输入第二个数");
int b=sa.nextInt();
boolean z=(a==b)?true:false;
if(z)
{
System.out.println("相等");
}
else
System.out.println("不相等");
int c=(a>b)?a:b;
System.out.println("两者中的最大值为"+c);
System.out.println("请输入第三个数");
int d=sa.nextInt();
int m=(d>c)?d:c;
System.out.println("三者中的最大值为"+m);
}
}
结果: