Java赋值运算符

JSON 2024-04-19 17:19:55 431

Java赋值运算符

给变量赋值似乎很简单;您只需将“=”右侧的内容分配给左侧的变量即可。下面的语句 1 将值 10 分配给变量 x,语句 2 创建名为 name 的 String 对象并为其分配值“Amit”。

Statement 1:     x =10;
Statement 2:   String name = new String ("Amit");

分配可以有多种类型。让我们详细讨论每一个。

原始赋值:

等号 (=) 用于为变量赋值。我们可以使用文字或表达式的结果来分配原始变量。

int x = 7; // literal assignment
int y = x + 2; // assignment with an expression
int z = x * y; // assignment with an expression with literal

原始铸造

通过强制转换,您可以将原始值从一种类型转换为另一种类型。当我们试图将较高精度的原语分配给较低精度的原语时,我们需要提供强制转换,例如,如果我们尝试将 int 变量(在 byte 变量的范围内)分配给 byte 变量,那么编译器将抛出一个名为“possible”的异常精度损失”。 Eclipse IDE 将建议解决方案,如下所示。为了避免这样的问题,我们应该使用类型转换来指示编译器进行类型转换。

byte v = (byte) a;


对于我们尝试将较小的容器变量分配给较大的容器变量的情况,我们不需要显式转换。编译器将处理这些类型转换。例如,我们可以将 byte 变量或 Short 变量分配给 int,而无需任何显式转换。


分配对于变量来说太大的文字

当我们尝试为原始变量分配太大(或超出范围)的变量值时,如果我们尝试提供显式强制转换,编译器将抛出异常“可能会丢失精度”,那么编译器将接受它但缩小范围使用二进制补码方法得到的值。让我们以具有 8 位存储空间和范围 -128 到 127 的字节为例。在下面的程序中,我们尝试将 129 文字值分配给字节原始类型,该类型超出了字节的范围,因此编译器将其转换为 -127使用二进制补码方法。请参阅二进制补码计算链接 (http://en.wikipedia.org/wiki/Two's_complement)

public class ExplicitCastingDemo {
	public static void main(String[] args) {		
		byte b = (byte)129;
		System.out.println("Value of b= " + b);
	}
}

输出:


引用变量赋值

我们可以将新创建​​的对象分配给对象引用变量,如下所示

String s = new String(“Amit”);
Employee e = New Employee();

第一行将做以下事情,

创建一个名为 s 且类型为 String 的引用变量

在堆内存中创建一个新的 String 对象

将新创建的 String 对象分配给引用变量

您还可以将 null 分配给对象引用变量,这仅意味着该变量未引用任何对象。下面的语句为 Employee 引用变量(引用值的位持有者)创建空间,但不创建实际的 Employee 对象。

Employee a = null;

复合赋值运算符

有时我们需要修改相同的变量值并将其重新分配给相同的引用变量。 Java 允许您使用速记运算符组合赋值和加法运算符。例如,前面的语句可以写为:

i +=8; //This is same as i = i+8;

+= 称为加法赋值运算符。其他简写运算符如下表所示

OperatorNameExampleEquivalent
+=Addition assignmenti+=5;i=i+5
-=Subtraction assignmentj-=10;j=j-10;
*=Multiplication assignmentk*=2;k=k*2;
/=Division assignmentx/=10;x=x/10;
%=Remainder assignmenta%=4;a=a%4;

下面是解释赋值运算符的示例程序:

public class AssignmentOperatorDemo {
	public static void main(String[] args) {
		//Literal Primitive Assignment
		byte b = 25;
		System.out.println("Primitive byte Assignment- "+ b);
		//Assigning one primitive to another primitive 
		byte c =b;
		System.out.println("Primitive byte Assignment from another byte variable- "+ c);
		//Literal assignment based on arithmetic operation
		int a = 23+b;
		System.out.println("Primitive int Assignment from arithmetic operation- "+ a);
		//Implicit Casting of variable x and y
		short s = 45;
		int x = b;		
		int y = s;
		System.out.println("Implicit Casting of byte to int- "+ x);
		System.out.println("Implicit Casting of short to int- "+ y);
		//Short-Hand Assignment Operators
		int i = 10;
		i+=10;
		System.out.println("Addition Oprator- "+ i);
		i-=10;
		System.out.println("Subtraction Oprator- "+ i);	
		i*=10;
		System.out.println("Multiplication Operator- " + i);
		i/=10;
		System.out.println("Division Operator- " + i);
		i%=3;
		System.out.println("Reminder Operator- " + i);
	}
}

输出:


概括

为 赋值可以直接进行,也可以进行强制转换。

如果我们分配的值超出了变量类型的范围,则分配 2 的补码。

Java 支持快捷方式/复合赋值运算符。


版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/524.html

转载时必须以链接形式注明原始出处及本声明。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
sql使用布尔运算符和关系运算符
sql使用布尔运算符和关系运算符
为什么undefined、NaN和Infinity可以被赋值,而null不可以?
Spring 静态变量注入赋值,静态方法调用,静态语句块
Java对文件CRC32计算
java json字串转json对象
Java 之 HTTP请求乱码解决,GZIP 返回乱码解决
Java Cookie 操作工具类
Java服务端监控平台设计
java组合函数所有组合(含代码)
最新文章
Linux I/O重定向 1767
Ruby 循环 - while、for、until、break、redo 和 retry 711
Node.js:全局对象 517
如何使用终端检查Linux上的内存使用情况 635
JavaScript对象详细剖析 300
Python print() 函数 409
PHP if/else/elseif 语句 407
HTML5 Canvas弧线教程 387
Java赋值运算符 431
XML内部实体和外部实体 464
最热文章
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 686836
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 675081
免费天气API,天气JSON API,不限次数获取十五天的天气预报 615785
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 611117
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 555623
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 510028
Elasticsearch教程(四) elasticsearch head 插件安装和使用 481399
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 269208
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 244787
Elasticsearch教程(一),全程直播(小白级别) 227489
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...