3.操作符

3.1 更简单的打印语句

    import中插入了static关键字,import static net.mindview.util.Print.* ; 打印直接通过:print("Hello,World") ;可以简化代码。

3.2  使用Java操作符

    利用操作符作用于操作数,生成一个新值。

3.3 优先级

    先乘除后加减,还可以用括号明确计算顺序。打印语句中包含“+”操作符,进行字符串连接。

3.4 赋值

    赋值就是说,取右边的值(常数、变量或表达式),把它复制给左边(必须为明确、已命名的变量)。

    基本类型赋值:复制的是内容。

    对象的“赋值”:复制的是引用。如对象 a=b,那么a和b复制了同一个引用(原来只有d指向的那个对象)

 

    

        t1和t2两个对象在指向了同一个引用之后,当t1指向的对象被改变,t2也随之改变。

    以上的f()并不只是在作用域内进行参数Letter y的复制,而是将引用传入,而进行了指向对象的修改。

3.5 算数操作符

    “+”,“-”,“*”,“/”,“%(取模:从整数除法中产生余数)”,操作符紧跟等号实现运算、赋值。

    产生随机数:Random rand = new Random(),当创建过程没传递参数时,Java利用当前时间作为随机数生成器的种子,所以每次都会产生不同的随机数,如果传递参数,那么种子既定,每次都会产生相同的随机数。调用Random对象的nextInt(),nextFloat,nextLong(),nextDouble()方法可以产生相应类型的随机数。

    一元加减号和二元加减号相同,x=-a,和x=c-a编译器可以自动判断,一元减号可以改变符号,一元加号只是与一元减号对应并将操作数提升为int。

    3.6 自动递增/自动递减

    他们不仅使用了自己的值,还改变了操作数,前缀加减(++i)是先运算再生成值,后缀加减(i++)是先生成值再运算。

    3.7 关系操作符

    关系操作符(<,>,<=,>=,==,!=)计算操作数间关系,结果为true或false,==和!=使用包括boolean类型的所有类型,其余比较符不适用于boolean类型,true和false无法比较。

    ==和!=可以比较对象和基本类型,比较对象:比较的是引用;比较基本类型:直接比较的是内容。

    equals():默认比较对象引用,当在新类中覆盖equals方法时,可以来比较对象内容(大多数java类库都实现了equals()方法,所以通常情况比较对象内容)。

    3.8 逻辑操作符

    逻辑操作符:与(&&)、或(||)、非(!)只能判断布尔值,对浮点数比较时,极微小的差异也认为“不相等”。

    操作符&&和||两边条件并不是全部运行,if((....)&&(...)&&(...)):前面有一个不符合,后面即不运行。if((....)||(...)||(...)):前面有一个符合,后面也不再浪费时间运行,获得潜在性能提升。

    代码:

public static void main(String args[]){

int i=3;

int j =4;

if((i<5)||(i>j++)){

System.out.println("短路"+j);  //j结果为4

}

 

public static void main(String args[]){

int i=3;

int j =4;

if((i>5)&&(i<j++)){

    System.out.println("i>5");

}

System.out.println(j);  //j结果为4

 

}

 

3.9 直接常量

    使用直接常量时,为保证编译器准确知道其类型,添加某些字符来增加信息,如:int f1 = 02xf; int f2 = 0x2F; int f3 = 0177;直接常量的后缀标志了类型,L代表long,F代表float,D代表double。十六进制:前缀0x,后跟随0-9或小写a-f,八进制:前缀0后跟随0~7数字。所有整数数据类型都可以用十六进制数表示,如果将变量初始化时,超过自身范围,编译器会将变量值转换为int类型后提示需要“窄化转型”。如果要将十六进制和八进制计数法的变量用二进制形式显示(二进制没有直接常量表示方法),可以通过Integer.toBinaryString()和Long.toBinaryString()方法来转化为int和long类型。

    (1)指数计数法

    “e”在科学工程领域代表自然对数的基数,约为2.718,但在java中,e表示10的幂次,1.39e表示1.39*10,。

    注意:当编译器能识别类型时,可以不添加数值后的附加字符,如long l3 = 45; 如果像float f5 = 3e^-23来说,编译器会自动将指数作为双精度处理,如果3e^-23后没有f,编译器会报错,提示必须通过类型转换将double转换为float。

3.10 按位操作符

    按位操作符操作整数基本数据类型中的单个“比特(bit)”——二进制位,对两个参数中对应的位执行布尔代数运算,并生成结果。按位操作符仅使用一个字符,&,|,异或(^),非(~),也可与=联合使用&=,|=,异或(^=),~为一元操作符不能和=连用。

3.11 移位操作符

   操作二进制的位,但是只能处理整数类型, 左移位操作符(<<)能按照操作符右侧指定位数将操作符左边的操作数向左移动,右移位操作符(>>)按操作符右侧指定位数将操作符左边的操作数向右移动。

3.12 三元操作符if-else

    也叫条件操作符,即   boolean-exp ? value1 : value2

    如果布尔表达式值boolean-exp为true,结果为value1,值为false,结果为value2

    特点:和if-else语句相比,更加简洁,但不如if-else语句更易理解

3.13 字符串操作+和+=

    主要在java中连接不同的字符串。

    java程序员不能实现自己的重载操作符,因为过于复杂。

    这个字符串操作符如果以一个字符串开头,那么后续所有操作数都会被编译器转为字符串类型。

    空的String后面跟随+和一个基本类型变量,即“”+200,可以作为不调用显示方法(Integer.toString())的字符串转换方式。

3.14 使用操作符时经常犯的错误

    while(x=y) 表示赋值,在java编译时会报错,while(x==y)结果为布尔值的判断。

    按位“与”和“或”可以代替逻辑“与”和“或”

3.15 类型转换

    转换运算允许对数值/变量显式的进行转换,不能自动转换时强制进行类型转换。多余转型也是可以的:因为会提醒自己留意,让代码更清楚,如long l2 = (long)55。

    窄化转换:容纳多信息的数据类型转为容纳少信息的类型,可能面临信息丢失危险,需强制类型转换。

    扩展转换:不用显式得的进行转换,新类型能容纳原来类型的信息,信息不会丢失。

    注意:布尔类型不能进行任何类型的转换类型。类数据类型也不能进行类型转换,但同一所属类型的类族间 可以类型转换

    (1) 截尾和舍入

    窄化转换时,截尾需注意:doule d2 = 0.9; int i6 = (int)d2;这里i6为0,将float和double转型为整型值时,总是对数字截尾。

    舍入:java.lang.Math中的round()方法进行舍入。

    (2)提升

    对数据类型进行算数运算或按位运算,表达式中出现的最大的数据类型决定表达式结果,float和double相乘,结果为double;int和long相加,结果为long

3.16 Java中没有sizeof

    C和C++中,因为不同数据类型在不同机器上有不同的大小,所以进行一些存储空间有关运算时,程序员应先熟悉类型大小,因此移植时较麻烦。

    java不需要sizeof()操作符,因为所有数据类型在任何机器上的大小都一样,能被移植到任何机器上。

总结

    布尔值只能被赋值,被测试真假,不能运算。

    char、byte和short中,对任意一个进行算数运算都会获得int结果。

    对于int值,在足够大的int值进行乘法运算时,需小心结果溢出,如下所示:

    int value = Integer.MAX_VALUE;

    int value2 = 3*value;

    System.out.println("value2="+value2);

    /*output:

      value2=-3

   */

    

 

 

 

 

    

    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值