这一章节我们来讨论一下操作符。
这里面讨论的操作符不是基础只是,而是一些操作符需要注意的点。
1.几乎所有的操作符都是操作基础数据类型,=、==和!=例外,还有+=和+可以是用在String上面。下面是三个例子
package com.ray.ch01;
public class Test {
public static void main(String[] args) {
int a = 1 + 1;
System.out.println(a);
double b = 1.2 / 1.0;
System.out.println(b);
}
}
package com.ray.ch01;
public class Test {
public static void main(String[] args) {
A a = new A();
A a1 = new A();
System.out.println(a == a1);
System.out.println(a == null);
System.out.println(a != null);
}
}
class A {
{
System.out.println("class A");
}
}
package com.ray.ch01;
public class Test {
public static void main(String[] args) {
String str = "abc";
System.out.println(str + "d");
str += 1;
System.out.println(str);
}
}
对于上面的str+=1,这里面的1是整形,但是它会先转成字符型,然后再进行字符相加。
2.优先级
对于复杂的公式,虽然java已经为我们规定好操作符的优先级,但是在使用当中经常忘掉,因此最好使用小括号括起来,这样无论优先级怎样,都可以按照原来的计算进行。
package com.ray.ch01;
public class Test {
public static void main(String[] args) {
int a = 1, b = 2, c = 3;
int d = a + b / 2 + c * 3;
int e = (a + b) / (2 + c) * 3;
System.out.println(d);
System.out.println(e);
}
}
大家可以看到,上面的e和d明显是不同的数值,如果我们进行更加复杂的运算,公式加入更多的操作符,这个时候小括号就是必须的。
3.赋值
使用右边的值赋给左边的值,右边的值可以是常量、变量或者表达式,左边的值是明确的已经命名的变量,不能够是常量或者表达式。
例如:
a=4是没有问题,但是4=a就是异常。
对于基础类型,赋值就像上面的一样简单。
对于对象的赋值,就是操作对象的引用,把引用赋给某个变量,当一个对象不被引用,他将会被垃圾回收器清除。
package com.ray.ch01;
public class Test {
public static void main(String[] args) {
A a1 = new A();
System.out.println(a1);
a1.id = 1;
System.out.println(a1.id);
A a2 = new A();
System.out.println(a2);
a2.id = 2;
System.out.println(a2.id);
a2 = a1;
System.out.println(a1);
System.out.println(a1.id);
System.out.println(a2);
System.out.println(a2.id);
}
}
class A {
int id;
}
输出:
com.ray.ch01.A@1fb8ee3
1
com.ray.ch01.A@61de33
2
com.ray.ch01.A@1fb8ee3
1
com.ray.ch01.A@1fb8ee3
1
从输出结果可以看出,a2原来所对应的对象在a2=a1之后就已经消除了,a2指向另一个对象。
上面的代码引申出一个问题,就是如果操纵对象的域,会引起混乱,这一点需要大家注意。
这一章节主要讨论操作符的一般的特性,下面将会对各种操作符进行展开。
这一章节就到这里,谢谢。
-----------------------------------
目录
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
从头写React-like框架的工程搭建实现 最近在网上看到了 Build your own React 这篇文章,作者从零开始实现了一个简易类 React 框架,虽然没有过多的优化,但 React 中的核心思想 Concurrent Mode,Fiber ...
本资料是UCSF DOCK的使用案例分享的输入资料,将使用DOCK 6.11自带的片段库,使用DOCK/RDKit的 DOCK_D3N功能从头设计分子。便于使用者直接从这部分设计工作开始,不需花时间来准备输入文件。
Vue2.1-SFS Vue 2.1项目-从头开始安装安装Node.js 转到安装 用于搭建Vue.js项目的简单CLI $ npm install -g vue-cli安装 完整的伪造REST API $ npm install -g json-server用法克隆或下载项目安装依赖项$ cd my-...
从头开始学习Java课程-资料来源PillsInformática。
Linux初始化和一些常用环境的搭建是一个虽简单但费时的工作,尤其是你的Linux由于某种不可控的因素宕机了,这意味着你又要从头开始部署一遍环境,有些令人抓狂,因此我有了搭建这个Linux初始化脚本库的想法,不管...
视频 https://www.bilibili.com/video/BV1914y1s7hi
视频 https://www.bilibili.com/video/BV1914y1s7hi
军工行业2021年度投资策略:而今迈步从头越-20201115-招商证券.pdf
赖世雄英语从头学 下载-附件资源
《从头写一个RISC-V操作系统》课程配套的资源.zip
外卖订餐java源码 你会学到什么 通过 Java 片段的构建块,您将能够立即了解 Java 编程的要点。 你需要什么 勇敢地浏览存储库! 或替代开源 JDK 1.8 版本 截至今天,该存储库已通过测试 Oracle JDK 1.8 OpenJDK 1.8 ...
Java-3D游戏引擎与基本游戏Java中使用LWJGL,OpenGL,OpenAL等的3D游戏引擎。 从头开始
乙二醇2020年度策略报告:“熊”关漫道真如铁,而今迈步从头越-20191230-光大期货-36页.rar
java实现验证码功能源码 Java Periphery 是一个高性能库,用于用户空间 Linux 中的 GPIO、LED、PWM、SPI、I2C、MMIO 和串行外设 I/O 接口访问。 我没有尝试从头开始构建它并生成 JNI 包装器。 这节省了大量手动编码...
此资源是个人学习时的遗留物》 有点案例可能不详细,仅为参考。 学习交流使用
开发人员零java-Mentorama 在此存储库中,将从头开始插入Java Developer模块的Mentorama课程期间开发的所有练习。
java 源码剖析 Java-Review 说明 这个仓库的建立的原因就是为了在 java 的复习过程中,从源码的角度去认真的钻研一下其内部的原理。 所有的分析和总结都在本人的博客上,希望和大家...操作符 关键字 String 多态 容器
java源码字符串缓冲区 这是 Java String 、 StringBuilder和StringBuffer方法/API 的完整指南。 本指南的源代码示例在我们的本地开发环境中进行了良好的测试,您可以将这些示例用作无错误。 您可以在 上了解更多信息...
3D游戏从头编-网上收集,很基础. 第一回:开发环境 第二回:3D基本概念 第三回:第一个D3D程序 第四回:渲染顶点 第五回:渲染索引顶点 第六回:摄象机 第七回:灯光 第八回:纹理 第九回:3D模型(.x)
引导自己从头开始编写一个操作系统, 一本自学的书