成都java开发培训
达内成都高升桥中心

18011516507

热门课程

培训java多少钱成都?java CH03操作符

  • 时间:2020-02-13 10:01
  • 发布:成都达内
  • 来源:成都达内

在最底层,Java中的数据是通过操作符来操作的。

操作符

+,-,*,*,=与其他语言类似

几乎所有的操作符只能操作“基本类似”,而=,==,!=是例外

String 类支持+和+=操作符,表示拼接操作,在进行拼接的操作会尝试将非 String 的元素转换为 String(调用tostring())

赋值操作符=的左边(左值)必须是一个明确的已命名的变量。

赋值

在为对象“赋值”时,其实质是拷贝“引用”,需要注意“别名现象”

package com.company.ch03;

class Tank {

int level;

}

public class Assignment {

public static void main(String[] args) {

Tank tank1 = new Tank();

Tank tank2 = new Tank();

tank1.level = 12;

tank2.level = 13;

System.out.println("tank1 = " + tank1.level);

System.out.println("tank2 = " + tank2.level);

tank1 = tank2;

tank1.level++;

System.out.println("tank1 = " + tank1.level);

System.out.println("tank2 = " + tank2.level);

}

}

//tank1 = 12

//tank2 = 13

//tank1 = 14

//tank2 = 14

方法调用中的别名问题

package com.company.ch03;

class Letter {

char c;

}

public class PassObject {

static void f(Letter y) {

y.c = 'z';

}

public static void main(String[] args) {

Letter x = new Letter();

x.c = 'a';

System.out.println("x.c = " + x.c); // a

f(x);

System.out.println("x.c = " + x.c); // z

}

}

不管是那种别名问题,关键是要理解到拷贝的是引用,不是对象。

算数操作符 & 自增与自减 & 按位操作符

整数除法不会四舍五入,而是直接舍去小数位

其余与C++中的一样

关系操作符

关系操作符与 C++ 也是类似,有一点比较特殊的是在 Java 中==和!=可以用在对象上,其比较的是引用,而不是对象内的值,如果要比较两个对象是否相等(语义上),通常调用equals函数来比较。

Integer n1 = new Integer(47);

Integer n2 = new Integer(47);

n1 == n2; // false

n1.equals(n2); // true

equals默认是比较引用,所以在自己实现的类中需要覆盖equals方法才能进行语义上的比较

逻辑操作符

&&,||和!操作只能用于布尔值,与C++不同,对一个非布尔值进行逻辑运算不会对该值强制转换,会报编译错误

Java中的逻辑操作符也有“短路”现象

直接常量

十六进制0x/0X前缀+0-9和a-f

八进制0前缀+0-8

后缀l/L表示long类型

后缀f/F表示float类型

后缀d/D表示double类型

指数记数法:1.39E-43表示1.39×e−431.39×e−43

移位操作符

移位操作符只能用于处理整数类型

>>符号扩展,>>>0扩展

对 char、byte、short 类型进行移位运算,在进行移位之前会先转回为 int

三元运算符

boolean-exp ? value0 : value1

字符串操作符 + 和+=

字符串中操作符 + 和+=表示“拼接”操作

如果一个表达式以字符串开头,那么其后续操作数都必须是字符串类型(不是则进行强制转换)

类型转换操作符

类型转换(cast)是指,在适当的时候,Java 会将一种数据类型自动转换为另一种。

显式的类型转换如下:

int i = 200;

long l = (long)i;

int j = (int)l;

类型转换:

窄式转换,需要显式指定(如 long 转 int)

扩展转换,无需显式指定(如 int 转 long)

Java允许任何基本类型之间的类型转换,除了布尔值。

“类”数据类型不允许类型转换

截尾和舍入

当 float 或 double 转向整型时,总是对数字进行截尾

如果需要舍入,可以调用java.lang.Math.round()

提升

一个表达式中出现的最大的数据类型决定了该表达式最终结果的数据类型,如 int 类型与 long 类型相加,得到一个 long 类型。

Java 没有 sizeof

由于Java中所有基本数据类型的大小都是明确的,所以不需要sizeof。BTW,boolean 不是没有明确嘛。

首发与Code & Fun

上一篇:成都学JAVA哪家好?Javaweb项目中修改表单时数据回显方法
下一篇:成都Java开发工程师:什么是JWT令牌认证?

成都java培训怎么样?达内java培训班靠谱吗?

成都哪家java培训好?推荐达内Java软件开发培训学校

成都java培训学费-达内教育Java培训费用是多少钱?

成都数据分析师培训班:关于什么是大数据和数据分析?

选择城市和中心
江西省

贵州省

广西省

海南省