Java学习笔记 :第三章:变量和常量 运算符2

Java学习笔记 :第三章:变量和常量 运算符

4 变量与常量

4.1声明变量

1.在Java中每一个变量都有一个类型(type),在声明变量时,先指定变量的类型,然后时变量名

2.变量名必须时一个以字母开头并由字母或数字构成的序列。变量名中的所有字符都是由意义的,并且大小敏感,变量名的长度基本上没有限制。

​ 注意:1.尽管$是一个合法的Java字符,但不要在你自己的代码中使用这个字符。它只是用在Java编译器或其他工具生成的名字中。

​ 2.另外不能使用Java保留字作为变量名。

4.2变量初始化

1.声明一个变量之后,必须用赋值语句对变量进行显式初始化。

2.变量的声明要尽可能地靠近变量第一次使的地方。

3.从Java 10开始,对于局部变量,如果可以从变量的初始值推断出它的类型,就不再需要声明类型。只需要使用关键字var而无须指定类型;

4.3常量

1.在Java中用关键字final定义常量,fianl表示这个变量只能被赋值一次,赋值后就不能再被更改了。习惯上常量名使用全大写;

2.类常量:在Java中,经常希望某个常量可以在一个类的多个方法中使用,可以使用关键字 static final设置一个类常量。类常量的定义位于main方法的外部。

3.如果一个常量被声明为public,那么其他类的方法也可以使用这个常量。

ps.const是Java的关键字,但是目前并没有使用。在Java中必须使用final定义常量。

4.4枚举类型

1.变量只在一个有限的集合内。直接赋值可能会出现赋值错误的情侣,针对这种情况设置了枚举类型。

2.枚举类型的声明:

enum Size{ SMALL, MEDIUM,LARGE,EXTRA_LARGE};
Size s = size.MEDIUM

Size类型的变量只能存储这个类型声明中给定的某个枚举值,或者特殊值null, null表示这个变量没有设置任何值。

5 运算符

5.1算术运算符

1.+、-、* 、/ 是Java语言的算术运算符

2.当参与/运算的两个操作数都是整数时,表示整数除法;(整数除法会默认的舍去小数点的后面数值)否则为浮点数除法;

3.整数被0除将会产生一个异常,而浮点数被0除将会得到无穷大或NaN结果。

4.如果想让让方法或者类都要使用严格的浮点运算就要使用关键字strictfp关键字修饰,区别就是默认方式不会产生溢出,运行速度快;而严格的计算有有可能产生溢出,运行速度慢;

5.2数学函数与常量

1.Math.sqrt() 可以计算一个数值的平方根。

2.Math.pow(底数,指数) 进行幂运算。pow有两个double类型的参数,其返回结果也为double类型。

3.进行取余的时候可能出现负余数的问题。floorMod()方法就解决这个问题,在不填入负除数的情况下,不会出现负值。

4.Math类提供了一些常用的三角函数:

Math.sinMath.exp
Math.cosMath.log
Math.tanMath.log10
Math.atanMath.PI
Math.atan2Math.E
不必在数学方法名和常量名前添加 前缀“Math",只要在源文件的顶部加上 import static java.lang.Math.*;
    在Math类中,为了达到最佳的性能,所有的方法都使用计算机浮点单元中的例程。
  如果为了得到一个完全可以预测的结果比运行速度更重要的话,那么就应该使用StrictMath类。

Math类提供了一些方法使整数有更好的运算安全性。如果一个计算溢出,数学运算符只是悄悄地返回错误的结果,而不做任何提醒。可以调用Math.multiplyExact();就会生成一个异常。另外还有些方法(addExact、subtractExact、incrementExact、decrementExact和negateExact)也可以正确地处理 int 和 long 参数。

5.3数值类型之间地转换

在这里插入图片描述

数值之间的合法转换;

虚线表示转型的时候会出现精度丢失;实线表示无丢失信息转换;

当用一个二元运算符时,系统会先将两个操作数转换为同一种类型,然后再进行计算。

1.如果两个操作数中有一个是double类型,另一个操作数就会转换为double类型。

2.否则,如果其中一个操作数是float类型,另一个操作数将会转换为float类型。

3.否则,如果其中一个操作数是long类型,另一个操作数将会转换为long类型。

4.否则,两个操作数都将被转换为int类型。

5.4强制类型转换

将一个数值从一种类型强制转换为另一种类型的过程叫做强制类型转换。

double x = 9.998
int y =  (int)x  //结果为9

1.强制类型转换会面临二个问题:

​ 1.转换的过程中会损失一些信息,例如:强制类型转换通过截断小数部分将浮点值转换为整形。

​ 2.从一种类型强制转换为另一种类型,而又超出目标类型的表示范围,结果就会截断成为一个完全不同的值。

2.如果相对浮点数进行舍入运算,得到最接近的整数要用Math.round()方法:

double x = 9.998
int y =  (int)Math.round(x) ///结果为10

5.5结合赋值和运算符

可以在赋值中使用二元运算符:+= 、*= 、-= 、/=

如果运算符得到的一个值,其类型与左侧操作数的类型不同,就会发生强制类型转换。

5.6自增与自减运算符

n++; ++n; n–; --n;

区别:前缀形式会先完成加一再使用;后缀形式会先使用再完成加一;

5.7关系和boolean运算符

常用的关系运算符

!= 、== 、 < 、 > 、<= 、>= (这个要注意符号顺序,符号顺序错了也会报错!)

逻辑运算符

​ && (与)和 ||(或)

三元操作符:

​ 判断语句 ? 结果正确执行 :结果错误执行

5.8位运算符

位运算符主要针对的是二进制;

public class BitwiseOperators {
    public static void main(String[] args) {
        int a = 129;//二进制为10000001
        int b = 128;//二进制位10000000
        int c = 2;//二进制为 0 10
        //只有二个数字的对应的二个位的值都为1才会显示为1,否则显示为0;
        System.out.println("a&b:"+(a&b));//10000000
        //二个数字的对应的二个位的值有一个为1就显示为1,否则显示为0;
        System.out.println("a|b:"+(a|b));//10000001
        //如果位为0,结果为1,如果位为1,结果为0
        System.out.println("~c:"+(~c));//1 01;
        //异或运算符 两个操作数的位中,相同则结果为0,不同则结果为1.
        System.out.println("a^b:"+(a^b));//00000001
    }
}

位运算符也可以应用在布尔值上,&和|运算符也会的到一个布尔值;

'>>'和‘<<’ 运算符可以将位模式左移或者右移。

‘>>>’运算符会用0填充高,这与>>不同。不存在 ‘<<<’ 运算符;

5.9括号与运算符级别

运算符结核性
[] . ()(方法调用)从左向右
!~++ – +(一元运算)-(一元运算)()(强制类型转换)new从右向左
* / %从左向右
+ -从左向右
<< >> >>>从左向右
< <= > >= instanceof从左向右
== !=从左向右
&从左向右
^从左向右
|从左向右
&&从左向右
||从左向右
?:从右向左
= += -= *= /= %= &= |= ^= <<= >>= >>>=从右向左

目前没怎么看懂,回头再接着看把

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值