从头认识java-2.2 算术操作符

这一章节来聊一下算术操作符

1.自动转换结果类型。

package com.ray.ch01;

public class Test {

	public static void main(String[] args) {
		int a = 2, b = 3;
		int c = a / b;
		int d = b / a;
		System.out.println(c);
		System.out.println(d);
	}
}

看上面的代码,b/a结果是1.5,明显是float类型,但是由于d是int,因此直接转换成int,而且在转换的过程中直接去掉小数部分。

2.表达式里面的变量或者常量自动转型,而且是向右转型,往能够容纳更大数据的类型转换。

转型方向:byte->shot(char)->int->long>float->double

package com.ray.ch01;

public class Test {

	public static void main(String[] args) {
		byte a = 2, b = 3;
		int c = a / b;
		int d = b / a;
		// a=c+d;//只能向上转换,不能向下转换,这里报错
		System.out.println(c);
		System.out.println(d);
	}
}

从代码可以看到,d=b/a没有问题,但是a=c+d确实报错,这就是类型转换的问题。

3.一元加与一元减

一元减:就是把数值取反。例如-(+1)=-1,-(-1)=1

一元加:只是把类型提升为int,对于大于int类型的数据不起作用。

下面是代码例子:

package com.ray.ch01;

public class Test {

	public static void main(String[] args) {
		byte a = 2;

		double c = 2.1;

		int b = 1 * -a;//等价于 int b = 1*(-a)

		double d = 2 * -c;

		System.out.println(getType(+a));
		System.out.println(getType(+d));

		System.out.println(b);
		System.out.println(d);
	}

	public static String getType(Object o) {
		return o.getClass().toString();
	}
}

输出:

class java.lang.Integer
class java.lang.Double
-2
-4.2

从上面的例子我们可以看到,1*-a这个在编译器里面是成立的,因此我们为了可读性,一般会写成1*(-a)

总结:这一章节我们讨论了算术操作符的三个注意点。

这一章节就到这里,谢谢。

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

目录

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2025-01-13 16:11:16

从头认识java-2.2 算术操作符的相关文章

[Java]#从头学Java# Java大整数相加

重操旧业,再温Java,写了个大整数相乘先回顾回顾基本知识.算法.效率什么的都没怎么考虑,就纯粹实现功能而已. 先上代码: 1 package com.tacyeh.common; 2 3 public class MyMath { 4 5 public static String BigNumSum(String... n) { 6 int length = n.length; 7 StringBuilder result = new StringBuilder(); 8 //这里判断其实不需

从头学Java【3】——之命名方法

1.命名法 对于变量.数组.方法/函数.类和对象,如何规范地进行命名至关重要,尤其是当程序规模扩大,变量数量激增的情况下.比较著名的命名规则: (1)匈牙利命名法 这种命名方法是由Microsoft程序员查尔斯·西蒙尼(Charles Simonyi) 提出的,C语言中常用此种命名法.标识符的名字以一个或者多个小写字母开头作为前缀:前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途.例如:lpszStr, 表示指向一个以'\0'结尾的字符串(sz)的长指针(lp)变量. (2

从头学Java【4】——之重载及构造方法

1.方法的重载:实现相同功能使用相同方法名: 2.构造方法: 作用:定义对象时给对象的各个属性赋初值: 特点: (1)构造方法名与类名相同:没有返回值和返回类型: (2)给对象属性赋初值时,是通过参数传递实现: (3)构造方法是在创造对象时,跟在new后面执行,不能通过对象或者类来调用构造方法: (4)如果定义类时既给字段进行了赋初值, 也有构造方法, 在创建对象时是先给成员变量赋初值,再执行构造方法的方法体: (5)如果程序员没有定义构造方法,系统会默认一个无参数的构造方法: (6)当程序员定

从头学Java【3】——几个重要的关键字汇总

几个重要的关键字汇总(a表示怎么用?b表示什么时候使用?c表示注意事项) (1)abstract关键字 a.可以修饰类.方法 修饰类时:不能实例化对象:必须被子类继承: 修饰方法时:没有方法体:必须写在抽象类中:必须被子类重写,若子类不重写,也声明为抽象类: b.一般现实中不存在的事物使用抽象类:父类方法,各子类实现方式各不相同时,则此方法在父类中声明为抽象方法; c.不能与这些关键字一起使用:private.static.final:不能修饰构造方法: (2)static关键字 a.可以修饰成

thinking in java ----reading note (3)

# thinking in java 4th# reading note# victor# 2016.03.13 chapter 3 控制程序流程 3.1 java 运算符    几乎所有运算符都只能操作"基本值类型"."=","=="和"!=" 能操作所有对象,String类支持"+"和"+=". 3.1.1 优先级    运算符的优先级决定了存在多个运算符时一个表达式个部分的计算顺序

Java学习之开篇—个人随想

现在大三上学期了,家里希望考研,不然觉得我这学校不好找工作,我自己觉得工作还是靠自己,学校就像给人第一眼感觉那样,虽然重要但也只会吸引HR多看两眼,真正留得住HR的还是要有拿的出手的技能. 当初凭着对计算机的热爱硬是选了了这个专业,大一刚进学校什么都不懂,纯粹一个计算机小白,然后大一上学期学了c语言,老师是湘大信工院四大杀手之一,因为又是学校ACM/ICPC比赛教练所以基本让我们用c在oj上刷算法题,刚开始对我有点难,记得当时军训(我们入学1个月后才军训)休息时我拿出手机记事本敲代码:练步时脑子

Chapter3_操作符_算术操作符

java中的算术操作符与其它语言并无太大区别,常用到的是以下这些: (1)加号(+),减号(-),除号(\),乘号(*),取模操作符(%),其中除号需要特别注意的是,会自动截取掉小数点后面的部分,而不是四舍五入地取得结果,要想获得精确的表示结果,需要将获得的结果表示为浮点数类型(float或者double).并且许多人认为只需将赋值运算符右边的某一个变量强制转换成浮点数就行,这种方式也是不行的,编译器会提示你无法将float或者double类型转换为int类型,除非使用cast进行强制的转型,在

流行的9个Java框架介绍: 优点、缺点等等

流行的9个Java框架介绍: 优点.缺点等等 在 2018年,Java仍然是世界上最流行的编程语言.它拥有一个巨大的生态系统,在全世界有超过900万Java开发人员.虽然Java不是最直接的语言,但是您不需要从头编写Java程序.有许多优秀的Java框架可以编写在Java虚拟机上运行的web和移动应用程序.微服务和REST api. Java框架允许您关注应用程序的业务逻辑,而不是编写数据库连接或处理异常等基本功能.此外,如果您有Java方面的经验,您可以快速入门.这些框架都使用相同的语法,使用

2020年到了,你需要掌握的9大顶级Java框架

全文共2931字,预计学习时长9分钟 图源:Unsplash 离2020年已不足一个月,然而截至目前,Java依旧是世界上最流行的编程语言.它拥有一个巨大的生态系统,在全世界有超过900万Java开发人员. 虽然Java不是最直接的语言,但是您不需要从头编写Java程序.有许多优秀的Java框架可以编写在Java虚拟机上运行的web和移动应用程序.微服务和REST api. 自1995年推出以来,Java已被包括ESPN.SnapDeal.阿里巴巴等在内的134861个网站所使用.经过24年的发

在tomcat上全手工部署Servlet3.0

从头写java文件的方式,编译成CLASS文件,加强对SERVLET容器的理解. 稍后试试JAR和WAR包. 文件内容(跟以前用IDE的一样): HelloServlet.java: package cc.openhome; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet