java之基础运算符

jvm java虚拟机里存放的是.class文件。

java虚拟机需要的是class文件,jvm不是跨平台的。

关键字一共53个,必须小写

目前 true

若有注释.java文件必须是一个公共类
才能生成文档。
-----------------------
学习进制与原反补码的目的是为了深入了解java
源码。

-------**------------*-
小数的十进制转换二进制绝大部分是无限位数

变量是java中最小单位的容器。

char 以u16进行编码,汉字占2个字节,英文占1个字节

所有码表默认兼容 ISO8859-1(西欧码表0-255)
---------------------–**–

变量在哪({})定义,就在哪使用;

如果数字太大java内也可划分标记例如 int a = 123_2_2_3_5;

类型转换

short s = ‘0’;没有问题,会类型检查是字符类型数据要进行赋值。

char c = s; char不能转换成其他类型,因为char类型不能有负数

-0表示当前类型的最小值。

-----**-------------
使用05-everedit写代码时,先设置右下角设置,GB2312
---------------------**-------
运算符

运算符的分类:算数运算符、赋值运算符、

比较(关系)运算符;

逻辑运算符、位运算符、三目(三元)运算符;

算数运算符:+、 -、 *、 /、 %、 ++、 --、

javac检测语法是否有误,运用java指令时

检测程序逻辑是否有误。

加法、

实例:

public class QWQ{public static void main(String[] args){
//操作运算符+的作用–>相加、字符串连接符
int a = 1; int b = 2;

//字符常量遇到正数变量就会转换成相应的编码值;
//例如
System.out.println(a+‘b’);
//的结果为98

System.out.println(a+b+“k”);
//整数变量遇到字符串就拼接,字符串可以拼接任何数据;
Sysrem.out.println
(“今天是星期”+a);
}}

除法 、

public class QWQ{public static void main(String[] args){
int a = 1;int b = 2 ;
//java中除法/的注意情况
//在java中所有参与运算的数据都为整型,则结果一定为整型如果有浮点型的数据参与运算,则结果一定是浮点型;
Sysrem.out.println(a/b);
//结果为0;
System.out.println(a*1.0/b);
//结果为0.5;
//java中整数不能除0,
ArithmrticeException—算数异常;
//java中小数允许除0
//但是会报Infinity(无穷)

被除数为0.0时除0;则报NaN—not a number不是一个数
}}

%取余、

public class QWQ{public static void main(String[] args){
//% 取余数的注意事项
//取余结果的正负和被除数有关,也就是%左边的正负有关系

System.out.println();
}}

java中的++与–、

public class QWQ{public static void main(String[] args){
//++ 与–的注意事项与使用方法
int a = 1; int b = 2;
//
System.out.println(a++);
System.out.println(++a);
//结果都为2
//如果++或者–修饰数据或者变量的后面例如
//a++,a–,则先进行传值,如果放在前面则先自行加一或者减一,再进行传值;

//例题
System.out.println((b++)+(++b)+(b++)+(–b);
2+4+4+2
//= 右边的最左边如果改变了变量值则会影响右边的变量值
System.out.println();

如果类型变量的值超出范围,默认进行强制类型转换

包括byte、short、char、

例如byte a = 127;
b++;则输出结果为-128;
}}
--*–-–**----------**-

赋值运算符:

public class QWQ{public static void main(String[] args){
//赋值运算符、 一般符号为 = ,把右边的值赋予给左边;底层默认加强制类型转换;
扩展: += -= *= /= %=
&=(按位与等) |=(按位或等)、
^=(按位异或等) >>=(右移等) <<=(左移等) >>>=(无符号右移等);

例如
int a = 1;
int b = 4;

a += b; 运算结果为a= a+b;结果为5;
默认强制类型转换

定义形式还可以:byte:b1=1,b2=2,b3=3;

java不支持连续等于,例如byte= a=b=1;
java支持连续赋值
例如:int a =3;
等于号= 左边从左往右依次编译,变量都有了具体的值。右边改变的值不能影响左边已经编译好的值;
int b = a+=a-=a;
}}
---------**----*--
使用比较运算符时,得到的结果一定为布尔值:true或false

例如:System.out.printlb(2<0);输出结果则为false

-–**----------------------------
逻辑运算符:

用于连接左右两边是布尔值或者布尔表达式的符号。

表达式:用于连接变量或者数据且符合java语法的式子。
比如算数表达式:a+b

&(逻辑与);| 逻辑或; ^ 逻辑异或; !逻辑非

&& 双与 ||双或

逻辑与

比较关系a>b b>c

class LuoJi{public static void main(String[] args){

//定义变量

int a =4; int b = 5; int c = 6;

System.out.println( (a>b) &(b>c));结果为false

}}

与&运算规律:两个比较只要有一个false,结果必定为false

|逻辑或运算规律:两个比较只要有一个true,则结果必定为true;

逻辑异或 ^ 运算规律:如果两边布尔值一样,则结果为false
如果不同为true(同性相斥,异性相吸)

逻辑非!:对结果取反,如果有奇数个!结果取反,如果是偶数个!

则结果不变;
------*----------------------------------------
&&双与和&单与 运算规律一致

但是如果左边运行结果为false时,执行短路
符号右边不运行

例如:

System.out.println((a++!b)&&(c–>b); );

System.out.println(a);a输出结果为5

System.out.println©;b输出结果为6

||双或和|单或 运算规律一致

但是如果左边运行结果为true时,执行短路

符号右边不执行

开发中常用双与双或;

–**–--------—**-----

扩展:

如果 || 与 &&同时出现在同一个表达式中,||在&&前面,如果
||发生了短路,则会把后面代码一起短路掉

System.out.println(true||xx<xxx)

--------------*–--**–*

位运算符

所有要操作的数据要转成二进制补码形式;

&(按位与)、|(按位或)^(按位异或)、~(按位取反)

(左移) <<(右移) >>>(无符号右移);

class XX{public static void mian(String[] args){

int i = 4; 

System.out.println(i&2 );结果为0;

}}

位运算操作实例

00000000 000000000 00000000 000000100 int 4

00000000 000000000 00000000 000000100 int 2

操作&(遇0则0)

00000000 000000000 00000000 000000100

00000000 000000000 00000000 000000010

00000000 000000000 00000000 000000000 0

--**–------------------
如何通过位运算&判断一个数是否是整数
将整数和 整数 1与,如果末位为0则为偶数,否则为奇数;

正数&任意整数--------都为正数;

-------------------–**–-*
操作位运算 或 |

遇1则1

00000000 000000000 00000000 000000100

00000000 000000000 00000000 000000010

00000000 000000000 00000000 000000110 6

任意整数 | 0 -----则等于本身;

负数|任意整数-----为负数;

------------------------
操作 ^(相同则0,不同则1)

00000000 000000000 00000000 000000100

00000000 000000000 00000000 000000010

00000000 000000000 00000000 000000110 6

-********************************************--
扩展: 按位异或扩展

class xx{public static void main(String[] args){
//定义变量

int a = 4;
int b = 5;

一个整数按位异或另一个整数两次,结果还是本身

原理:两个数相同则值为零;

System.out.println(b^b^a);

}}

按位异或的拓展应用

交换两个变量的整数值

class XX{public static void main(String[] args){

int a = 4; 
int b = 5

System.out.println(“a的值为”+a+“b的值为”+b);

正常换位

int temp = a;

a = b;

b = temp;

运用按位异或运算换位;

a=a^b;
b=a^b;
c=a^b;

输出结果为a和b的值互换

求和
a=a+b;
b=a-b;
a=a-b;

}}
三个操作效率由高到低排序:1、按位异或;2、求和;3、中间变量;

按位异或的限制:按位异或只能是整数;

求和换位的限制:一般是整数;

在开发中最常用的是中间变量;原因1、简单;2、明了、3、可以适用于任何数据;

-------------------------

按位取反 ~ 的位运算操作

所有位都按位取反

00000000 000000000 00000000 000000100

11111111 111111111 11111111 111111011

位运算符演示:
(左移)<< (右移)>> >>>(无符号右移)

(右移)>> :如果是正数,往右移动几位在左边最高位补几个0

如果是负数,往右移动几位,在最左边最高位补几个1

(左移)<< :无论正负数,往左移动几位就在最右边补几个0

>>>   (无符号右移):无论正负数,往右移动几位就在最左边最高位补几个0;

class xx{public static void mian(String[] args){
int a = 5;
操作
System.out.println( a>>2);
System.out.println( a<<2);
System.out.println( a>>>2);
}}

00000000 000000000 00000000 000000101 5 (补码)

操作>>2 只适用于部分正数

【00】000000 000000000 00000000 0000001(01) 移动后结果为1

操作<<2 只适用于部分整数
(00)000000 000000000 00000000 000000101【00】 移动后结果为20

操作a>>>2 结果一定是正数

[00]000000 000000000 00000000 0000001(01)

()内为移动的值,【】内为补的值

-----------------–*--
移位原理;java对移动的位数根据数据类型的位数进行取余,

之后才是需要移动的位数;

只针对整型数值;

然后再操作;byte short char除外,

此三种类型在底层以32位进行存储表示;

----–**---------------
~a 一元
a+b 二元

三目(三元)运算符:

   格式:
	表达式 ? 表达式值1:表达式值2;

执行流程

 先去计算表达式的值,若为true,就执行表达式1,返回值1
	
 若为false 就执行表达式2,返回值2;

两个表达式可以不一样,保证两个表达式值的类型在返回值

类型的范围内;

public class XX{public static void mian(String[] args){

//求两个变量的最大值

//把最大值给新变量

int a = 3;

int b = 6;

int max = a>b?a:b;

System.out.println(max);

//求三个整数的最大值

int a = 2;

int b = 3;

int c = 4;

//两两比较
//拿着最大值和第三个变量比较

int max =a>b?a:b

System.out.println(max>c?max:c);

利用三目嵌套,一步比较三个数字最大值:

System.out.println(a>b?(a>c?a:c):(b>c?b:c));

三目表达式的结论:结果一定是值。

在参与比较中。算数运算符优先

}}
-----------------------*–
tips:

java中的优先级排列

()~++--!*/%+-<<>>>>>关系 逻辑&|^三元赋值

--------------------------
关于键盘录入:

步骤:1、导包 需要使用的类和本类不在一个包下
	impotr java.util.*;

      2、找到Scanner
	Scanner sc = new Scanner(System.in);

      3、获取数值

	int a = sc.nextInt;

实例

public class{public static void main(String[]) args{

Scanner sc = new Scanner(System.in);

int a = sc.nextInt();

System.out.println(a);

}}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值