Java赋值运算符

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

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

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

本文主题:

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

关于作者
一个低调而闷骚的男人。
相关文章
为什么undefined、NaN和Infinity可以被赋值,而null不可以?
Spring 静态变量注入赋值,静态方法调用,静态语句块
Java对文件CRC32计算
java json字串转json对象
Java 之 HTTP请求乱码解决,GZIP 返回乱码解决
Java Cookie 操作工具类
Java服务端监控平台设计
JSOUP 教程—— Java爬虫,简易入门,秒杀htmlparser
Java 随机从 List 随机获取多个不重复对象,Mysql 随机10条数据
Java 获取HTPP 301 / 302 重定向后的Url地址,301和302对SEO的影响
最新文章
JavaScript对象详细剖析 2
Python print() 函数 88
PHP if/else/elseif 语句 125
HTML5 Canvas弧线教程 103
Java赋值运算符 118
XML内部实体和外部实体 231
Java面向对象编程概念 177
PHP回显语句 131
Linux—文件树 176
C语言while循环和do while循环 155
最热文章
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 683182
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 674780
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 603455
免费天气API,天气JSON API,不限次数获取十五天的天气预报 583029
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 553207
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 509511
Elasticsearch教程(四) elasticsearch head 插件安装和使用 480131
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 265314
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 244343
Elasticsearch教程(一),全程直播(小白级别) 225734
支付扫码

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

查看我的收藏

正在加载... ...