Java编程那些事儿24—赋值运算符

4.4 赋值运算符

赋值运算符是指为变量或常量指定数值的符号。最基本的赋值运算符是“=”。

由于Java语言是强类型的语言,所以赋值时要求类型必须匹配,如果类型不匹配时需要能自动转换为对应的类型,否则将报语法错误。示例代码:

byte b = 12;   //类型匹配,直接赋值
int n = 10;    //类型匹配,直接赋值
double d = 100;//类型不匹配,系统首先自动将100转换成100.0,然后赋值
char c = -100;  //类型不匹配,无法自动转换,语法错误

需要强调的是,只能为变量和常量赋值,不能为运算式赋值,例如:

int a = 10;
int b = 2;
a + b = 100;//不能为运算式a + b赋值,语法错误

常量只能赋值一次,否则也将出现语法错误,例如:

final int N = 10;
N = 20;//常量只能赋值一次,语法错误

在基本的赋值运算符基础上,可以组合算术运算符,以及后续将学习的位运算符,从而组成复合赋值运算符。赋值运算符和算术运算符组成的复合赋值运算符如下表4-4所示。

表4-4 复合赋值运算符

符号 名称 功能说明
+= 加等 把变量加上右侧的值然后再赋值给自身
-= 减等 把变量减去右侧的值然后再赋值给自身
*= 乘等 把变量乘以右侧的值然后再赋值给自身
/= 除等 把变量除以右侧的值然后再赋值给自身
%= 取余等 把变量和右侧的值取余然后再赋值给自身

实际使用示例:

int n = 2;
n += 3;

说明:计算以前n的值是2,也就是把n + 3的值,也就是5再赋值给n,经过运算以后n的值为5,因为该代码只执行一次,所以不会导致循环。

依次类推,其它的复合赋值运算符也是这样:

int n = 10;
n -= 2;//则n的值是8
n *= 3;//因为n的初值是8,则n运算后的结果是24
n /= 5;//因为n的初值是24,则n运算后的值是4

注意:复合赋值运算不会改变结果的类型,所以在有些时候运算在逻辑上会出现错误,但是符合计算中数值的表述。例如:

byte b = 127;
b += 1;
System.out.println(b);

根据前面的介绍,byte类型的取值区间是-128~127,由于复合赋值运算符不改变结果的类型,则导致结果是-128,而不是128。原因如下:

lbyte类型值127的机器数是01111111,0表示正数,后续的数值表示127

l该数值加1后,得到的数值是10000000,二进制加法

l而10000000在byte类型中恰好是-128的机器数表示形式

其它类型的符合运算符也可能存在类似的情况,使用时需要注意。

文章来源:http://blog.csdn.net/Mailbomb/archive/2008/05/23/2473815.aspx

时间: 2024-08-01 16:19:29

Java编程那些事儿24—赋值运算符的相关文章

Java编程那些事儿52—方法声明

第七章 方法 方法(method),在面向过程的语言中称作函数(function),在汇编语言中称作子程序,是一个代码功能块,实现某个特定的功能.在实际的程序开发中,方法是一种基础的组织代码的方式.本部分就介绍方法相关的概念.相关语法以及实际使用时需要注意的问题. 7.1 方法概述 方法的概念来源于数学上的函数,在数学中,当数据具有一定的规律时,就是用一个函数来代码该数字的规律,例如f(n)=n则代表1.2.3.--这样的一个数列.在数学上n是参数,对于确定的n值只有一个f(n)的值和它对应.

Java编程那些事儿25—位运算符

4.5 二进制运算符 由于计算机内部的数据都以二进制的形式存在,所以在Java语言中提供了直接操作二进制的运算符,这就是下面要讲解的位运算符和移位运算符. 使用二进制的运算符,可以直接在二进制的基础上对数字进行操作,执行的效率比一般的数学运算符高的多,该类运算符大量适用于网络编程.硬件编程等领域. 二进制运算符在数学上的意义比较有限. 在Java代码中,直接书写和输出的数值默认是十进制,Java代码中无法直接书写二进制数值,但是可以书写八进制和十六进制数字,八进制以数字0开头,例如016,十六进

Java编程那些事儿3——你适合学习程序设计吗?

 Java编程那些事儿3--你适合学习程序设计吗?作者:陈跃峰出自:http://blog.111cn.net/mailbomb          程序设计是一个技术活,所以不是适合所有的人.现在很多人听说程序设计人员待遇如何如何的好,都一窝蜂的来学习程序,其实这个现象很不正常,因为程序不一定适合你.其实对于一个人来说,适合你的才是最好的.         就像现在很多小孩子都被家长逼着去学钢琴啊什么,有些小孩根本没有艺术细胞的,所以学习的效果就是差强人意了.         其实程序设计最需要

Java编程那些事儿4——如何学好程序设计?

  Java编程那些事儿4--如何学好程序设计?作者:陈跃峰出自:http://blog.111cn.net/mailbomb          俗话说"兴趣是最好的老师",但是只靠兴趣是远远不够的,还需要付出艰辛的努力.程序设计是一种技能,需要在较短的时间内学会,就不能像学习汉语一样,通过十几年甚至更长的时间来学好,也不能像英语那样进行业余学习,以至很多大学毕业的人英语水平也不敢恭维,也达不到实用的程度.         那么如何学好程序设计呢?或者更现实一点,如何在短时间内成为一个

Java编程那些事儿1——序言

 序言          从大学毕业到现在,马上就六年了,这六年中从事过开发,也从事培训工作,相比而言,参加培训工作的时间要长一些.由于工作的特点,遇到了各种各样的学生,在学习编程时遇到了一系列的问题,也有很多迷茫的时候,希望通过编写本书,把相关的问题进行一下总结,把自己的经验和大家进行分享.当然由于一些知识也只是个人见解,也希望大家积极指正,帮助编程的初学者,以及程序开发人员深刻理解基础的概念,更好的学习编程和从事开发工作.         编写一本书,总要有个名字吧,姑且把书名叫做<Java

Java编程那些事儿101——网络编程概述

第十三章 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在学习网络编程以前,很多初学者可能觉得网络编程是比较复杂的系统工程,需要了解很多和网络相关的基础知识,其实这些都不是很必需的.首先来问一个问题:你会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛,很简单的事情啊!其实初学者如果入门网络编程的话也可以做到这么简单! 网络编程就是在两个或两个以上的设备(例如计算机)之间传输

Java编程那些事儿97——多线程使用示例2

12.3.2 模拟网络数据发送 在实际的网络程序开发中,由于网络通讯一般都需要消耗时间,所以网络通讯的内容一般都启动专门的线程进行处理. 这样,在一个最简单的网络程序程序中,至少就包含了两个线程:处理界面绘制和接收用户输入的系统线程,以及至少一个网络通讯线程. 下面以一个简单的模拟程序,实现模拟网络数据的发送功能,关于更详细的网络编程中线程的使用,可以参看后续的网络编程章节. 在该示例代码中,用户在控制台输入需要发送的内容,程序接收到用户的输入以后,启动一个单独的线程进行网络通讯,然后用户可以继

Java编程那些事儿96——多线程使用示例1

12.3 多线程使用示例 多线程技术对于初学者来说,是编程思维的一种跳跃,在实际学习时,一定要熟悉线程的基础知识,掌握线程的实现方式,然后就是开始大量的进行实践,从实践中领悟线程编程的奥妙以及实现的原理. 下面通过几个常见的例子演示多线程的基本使用. 12.3.1 定时炸弹 定时炸弹是在电影中常见的一种装置,在该部分就使用多线程技术模拟该功能.实现的功能为:在程序启动以后进行倒计时,当60秒以后程序结束,在程序运行时可以在控制台输入quit控制线程(炸弹)的暂停. 在该示例程序中,开启了一个系统

Java编程那些事儿94——多线程实现方式1

12.2 多线程实现方式 线程的概念虽然比较复杂,但是在Java语言中实现线程却比较简单,只需要按照Java语言中对于线程的规定进行编程即可. 在实现线程编程时,首先需要让一个类具备多线程的能力,继承Thread类或实现Runnable接口的类具备多线程的能力,然后创建线程对象,调用对应的启动线程方法开始执行即可实现多线程编程. 在一个程序中可以实现多个线程,多线程编程指在同一个程序中启动了两个或两个以上的编程形式.当启动的线程数量比较多时,对于系统资源的要求比较多,所以程序支持的最大线程数量和