




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java语言与系统设计中南大学信息科学与工程学院计算机工程系黄家玮jiaweihuang@第2章变量和运算
数据类型
常量
变量
运算符
表达式
函数数据类型
Java语言把数据分为基本数据类型和类类型两大类。基本数据类型由Java系统定义,用户可以直接使用;类类型可以是Java系统定义的,也可以是用户在编写程序时自己定义的。基本数据类型int表示标准整型,每个值占用4个字节,32个二进制位;short表示短整型,每个值占用2个字节,16个二进制位;byte表示字节整型,每个值占用1个字节,8个二进制位;long表示长整型,每个值占用8个字节,64个二进制位;float表示单精度实数类型,每个值占用4个字节,32个二进制位;double表示双精度实数类型,每个值占用8个字节,64个二进制位;基本数据类型char表示字符类型,每个值占用2个字节,16个二进制位,字符采用Unicode编码方式,可以对字符类型的数据进行整数运算,此时字符类型的数据的值就是它的编码值;byte<short<char<int<long<float<double计算精度:基本数据类型boolean表示标准逻辑(布尔)类型,每个值占用1个字节,8个二进制位,它只包含有2个值:true和false,其中true表示逻辑真,false表示逻辑假;void表示无类型,没有任何值,不占用存储空间,用于函数(方法)的返回值类型,表示该方法不需要返回值。类数据类型一个类既包含有数据成员,又包含有方法(函数)成员,它比C语言中的结构类型struct相似还要更复杂。数据和处理数据的函数(方法)都同时定义在一个类中,数据和方法定义在同一个模块(类)内,被封装为一个整体。类数据类型常用的类已经由Java语言系统本身所定义,被包含在不同的系统包(目录)中,其中最重要的系统包为java.lang包。在java.lang包中包含有许多常用的类,其中Object类是所有类的根基类,还有字符串类String,数学函数类Math,每一种基本数据类型的包装类(如整数int类型的包装类为Integer),系统类System。常量Java语言中的运算对象包括常量、变量、函数和表达式四种,而函数和表达式也是对常量和变量进行运算的表示。所以说,最基本的运算对象是常量和变量。常量Java语言中的运算对象包括常量、变量、函数和表达式四种,而函数和表达式也是对常量和变量进行运算的表示。所以说,最基本的运算对象是常量和变量。常量分为字面常量和标识符常量。字面常量的值就是字面本身,如25是一个字面整数常量,它的值就是25;标识符常量的值与字面本身不同,如表示逻辑值的true和false就是两个标识符常量,true的值为真,false的值为假。整数常量(整数)十进制:第一个数字非0,如1、25、-100、3270八进制:第一个数字为0,第二个及以后为八进制数字0-7,如023、074等,八进制数023对应十进制数为19。十六进制:前两个为先导字符0x或0X,后面每位为十六进制的字符0-9,a~f或A~F,其中a~f或A~F依次对应的十进制数值为10~15。如0x23、0Xa5等为十六进制表示的整数,0x23对应的十进制数为35。整数分类:对于一个整数常量,系统自动认为是int类型的,若一个整数后缀字母l或L,则被定义为long类型的长整数。实数常量(实数)定点表示:如12.0、-3.56、0.06、0.0等。浮点表示:2.45e3、-30E-4、4.2e12等。浮点表示的实数由三个部分组成,字母e或E是乘幂的底数10,它的前面为尾数部分,后面为指数部分。这3个浮点数分别为2.45×103、-30×10-4和4.2×1012。实数分类:对于一个实数,系统默认为是双精度型,即double类型,若需要把一个实数表示为单精度float类型,则需要在其实数后面加上字符f或F作标记。如2.54为双精度型实数,而2.54f则为单精度型实数。程序1:
classExample_1{//主类publicstaticvoidmain(String[]args){bytex=127; floatf=12.58; System.out.println("x="+x+",f="+f);}}.实例:哪里错了?字符常量(字符)字符常量简称字符,用单引号括起来,以示同数值常量表示的区别,字符常量有一般字符表示和转义字符表示之分。如'a'、'5'、'+'等属于一般字符,而'\n'、'\0'、'\\'、'\075'等属于转义字符。通过一个反斜线使得后面的字符发生了转义,所以称为转义字符表示。通常使用转义字符来表示无法用字面表示的字符,如'\n'表示换行符,对于的十进制编码为10;'\0'表示十进制编码为0的空字符;'\\'表示一个反斜线字符,'\075'表示十进制编码为61的等号字符'='。程序2:
classExample_2{
publicstaticvoidmain(String[]args){charc1='C';intic1=c1;System.out.println("ic1="+ic1);inti1=65;charci1=(char)i1;System.out.println("ci1="+ci1);}}.实例:(char)?字符串常量(字符串)用一对双引号作为起止定界符。字符串中可以包含一般字符,也可以包含转义字符。字符串的长度就是所包含的字符个数。如"apple"就是一个字符串,其长度为5,"王光明"也是一个字符串,其长度为3,"xyz\n"是一个字符串,其长度为4,它带有3个普通字符和一个转义字符,即换行符。在Java语言中,把字符串归为String类型,即字符串类。字符串常量(字符串)基本数据类型转换为字符串String.valueof(基本数据类型)字符串转换为基本数据类型Integer.parseInt(字符串)Float.parseFloat(字符串)Double.parseDouble(字符串)程序3:
classExample_3{
publicstaticvoidmain(String[]args){
intx1=5; Strings1=String.valueOf(x1);System.out.println("x1的值是"+s1);Strings2="10";intx2=Integer.parseInt(s2);System.out.println("s2的值是"+x2);}}.实例:标识符常量标识符常量包括Java语言系统中已定义的标识符常量和用户编写程序时自行定义的标识符常量两种情况。系统定义的标识符常量:如介绍过的true、false、null等标识符常量,还有Math类中定义的PI常量,表示为Math.PI,它的值为圆周率∏的值3.1415926,同时定义了Math.E常量,它的值为工程常数e的值2.7182818。标识符常量用户定义的标识符常量:在变量定义语句中使用final修饰符。例如:intx=5;//定义x为一个变量,初始值为5,以后可以改变
finalintx=5;//定义x是一个常量,其值被初始化后不能改变
finaldoubleMax=100.0;//定义Max常量,其值始终为100.0变量变量:变量分为简单变量(基本变量)和引用变量(对象)两种情况,变量的值可以随时被改变,即被赋予新值。简单变量:就是利用基本数据类型定义的变量。采用变量定义语句进行定义时,系统将分配对应字节数的存储空间,用来保存变量的值。每一个变量用一个标识符来表示,允许对它赋初值,或者以后利用赋值表达式或语句修改它的值。变量变量定义语句:在使用变量之前必须先使用变量定义语句定义变量。如要用变量r表示圆的半径,并假定半径的值为实数,则应把它定义为单精度或双精度类型的变量。变量定义语句的一般格式为:类型关键字变量标识符[=初值表达式],…;如:doubler;//定义r为双精度变量intc=0,n=1;//定义c和n为整型变量,并分别赋初值为0和1intx,y;//定义x和y为整型变量x=5;y=8;//给x和y分别赋值为5和8intz=x+y;//定义z为整型变量,并赋初值为x+y的值13程序4:
classExample_4{
publicstaticvoidmain(String[]args){
intx=127;
}System.out.println(x);}.实例:哪里错了?变量引用变量(对象):利用类的类型定义的变量就是引用变量。在定义语句中,类型关键字为类类型的标识符。引用变量相当于C语言中的指针变量,为它分配4字节的存储空间,用来保存一个实际存储对象所占用的内存单元的首地址。变量Stringname="王明军";//定义字符串对象name,它的值为由字符串"王明军"生成的存储对象的首地址,name所指向的存储对象的值为字符串"王明军"。Stringname=newString("王明军");//此语句同上面一条语句的功能完全相同,它的初始化过程是:首先采用new运算,建立一个存储字符串"王明军"的字符串存储对象,然后把这个存储对象的首地址赋给引用对象name。变量通过变量定义语句定义的变量为引用对象,通过new运算符得到的存储数据的空间为存储对象,运算结果是返回该存储对象的首地址。引用对象只有被赋予存储对象的首地址后,才能够通过点运算符访问存储对象中的值。运算符算术运算符:有单目和双目两类,单目的有++、--等,双目的有+、-、*、/、%(取余)等。程序5:
classExample_5{
publicstaticvoidmain(String[]args){
inta=7; intb=2; System.out.println(a+b);System.out.println(a/b);System.out.println(a%b);System.out.println(a++);System.out.println(a);System.out.println(""+a+b); }}.实例:运算符赋值运算符:分为一般赋值和复合赋值两类,一般赋值采用等号,复合赋值是算术运算符或者位运算符和等号的结合。如b=5为一般赋值,把5赋给b;b+=3为复合赋值,相当于b=b+3,b的结果值为8。运算符关系运算符:共6个:>、>=、<、<=、==、!=。它们都是双目运算符,运算结果为逻辑值真或假,即true和false。如5>4为真,3<=2为假。在这6个运算符中存在着3对相反的运算符,其中>与<=相反,<与>=相反,==与!=相反。运算符逻辑运算符:共3个:与(&&)、或(||)、非(!),其中与和或是双目运算符,非(取反)是单目运算符,运算对象是关系式或者是逻辑表达式,运算结果是逻辑值真或假。如y>=1&&y<=4就是一个逻辑“与”表达式,当y的值大于等于1、同时又小于等于4时,该表达式的值为真,否则为假。逻辑运算的等价关系:!!a同a等价、!(a&&b)同!a||!b等价、!(a||b)同!a&&!b等价。如!(x>3&&x<8)同(x<=3||x>=8)等价。运算符条件运算符:是一个3目运算符,包含有两个符号和3个运算对象,格式为:<逻辑表达式>?<表达式1>:<表达式2>。如:x>y?z=x:z=y;构成的一条表达式语句,若x>y则把x的值赋给z,否则把y的值赋给z。运算符元素运算符:为一对中括号,用来访问数组中的元素,中括号内为元素的下标,中括号前面为数组名。如a[i]表示数组a中的下标为i值的元素。对于二维数组则使用两个中括号,一个表示行下标,另一个表示列下标,如b[2][3]为一个二维数组b中的元素,行和列下标分别为2和3。运算符成员运算符:用一个点表示,它也是一个二元(双目)运算符,用来访问类对象中的成员,包括成员变量和成员方法。如s.length表示访问s对象中的length成员变量的值,s.size()表示调用s对象中的size()成员方法。访问数据成员和方法成员的区别在于:若成员名后带有圆括号参数表,则为调用成员方法,否则为访问成员变量。运算符
Java语言中定义的位运算直接对整数类型的位进行操作,这些整数类型包括long型,int型,short型,char型和byte。位运算符及其结果运算符 结果~ 按位非()(一元运算)& 按位与()| 按位或()^ 按位异或()>> 右移>>> 右移,左边空出的位以0填充<< 左移&= 按位与赋值|= 按位或赋值^= 按位异或赋值>>= 右移赋值>>>= 右移赋值,左边空出的位以0填充<<= 左移赋值(1)按位非(~)
按位非也叫做补,“~”是对其运算数的每一位取反。例如,数字42,它的二进制代码为:00101010经过按位非运算成为11010101(2)按位与(&)如果两个运算数都是1,则按位与运算结果为1。其他情况下,结果均为零。看下面的例子:00101010 42&00001111 15--------------00001010 10(3)按位或(|)两运算数中任何一个运算数为1,则按位或运算后结果为1。如下面的例子所示:00101010 42|00001111 15--------------00101111 47(4)按位异或(^)两运算数中,只有在两个比较的位不同时按位异或后运算结果是1。否则,结果是零。下面的例子显示了“^”运算符的效果。
00101010 42^00001111 15-------------00100101 372.左移运算符左移运算符<<使指定值的所有位都左移规定的次数。它的通用格式如下所示:
value<<num这里,num指定要移位值value移动的位数。也就是,左移运算符<<使指定值的所有位都左移num位。每左移一个位,高阶位都被移出(并且丢弃),并用0填充右边。3.右移运算符
右移运算符>>使指定值的所有位都右移规定的次数。它的通用格式如下所示:
value>>num这里,num指定要移位值value移动的位数。也就是,右移运算符>>使指定值的所有位都右移num位。
当值中的某些位被“移出”时,这些位的值将丢弃。例如,下面的程序片段将35右移2次,它的2个低位被移出丢弃,也将结果8赋给变量a:inta=35;a=a>>2;8
用二进制表示该过程:0010001135>>2000010008实例classOpBitEquals{publicstaticvoidmain(Stringargs[]){inta=1;intb=2;intc=3;a|=4;b>>=1;c<<=1;a^=c;System.out.println("a="+a);System.out.println("b="+b);System.out.println("c="+c);}}表达式表达式定义:是由操作数和运算符进行有效连接而成的式子。单个操作数是最简单的表达式。如x、x+y、x>5、a>5&&b>=10等都是有效的表达式,25、true、'd'、"apple"它们都是常量,同时也分别是最简单的表达式。表达式表达式分类:数值表达式、关系表达式、逻辑表达式、字符表达式(只有字符常量、变量、函数,没有运算符,可以作为整数参加算术运算)、字符串表达式(用加号连接两个字符串,如"abc"+"def",则结果为"abcdef")。表达式表达式运算:按照表达式中各个运算符的优先级和结合性进行,运算结果得到一个值。()、[]、.具有最高优先级,接着是++、--、!,再接着为*、/、%等。这些同C语言中运算符优先级相同。表达式数值表达式值的类型:当两个不同类型的操作数进行算术运算时,涉及到类型的转换,被转换为同一类型后再运算。类型转换分为系统自动转换和程序强制转化两种情况。从少字节的类型到多字节的类型、从整数类型到实数类型是自动转换,相反则需要强制转换。表达式如x+y,若x为int,y为double,则首先将x的值取出后自动转换为一个临时的double类型的双精度数,然后再与y相加,相加结果是一个double类型的实数;若需要使x+y进行int运算,则需要表示为x+(int)y,也就是说,必须首先把y的值强制转换为int类型后再做整数加法运算。表达式一个赋值表达式为a=x+y,若a为int型,x+y的运算结果也为int型,则不须转换而直接赋值;若x+y的运算结果为byte、short类型,则自动转换为int型后赋值;若x+y的运算结果为float、double类型,则需要进行强制转换后才能赋值,为此应把a=x+y修改为a=(int)(x+y)。实例classDataType{publicstaticvoidmain(String[]args){Stringstr="123";intj;byteb;inti=257;doubled=323.142;System.out.println("\nConversionofinttobyte.");b=(byte)i;//强制转换
System.out.println("iandb"+i+""+b);System.out.println("\nConversionofdoubletoint.");i=(int)d;//强制转换
System.out.println("dandi"+d+""+i);b=(byte)d;//强制转换
System.out.println("dandb"+d+""+b);j=Integer.parseInt(str);System.out.println("j="+j);}}表达式函数调用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030空气能热水器行业市场发展分析及竞争格局与投资战略研究报告
- 2025-2030移动硬盘录像机市场前景分析及投资策略与风险管理研究报告
- 2025-2030禽类屠宰机械市场发展分析及行业投资战略研究报告
- 2025-2030盲点监视器行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030男士休闲西服市场发展现状调查及供需格局分析预测研究报告
- 2025-2030电池项目可行性研究报告
- 2025-2030电动滑板车行业市场发展分析及发展趋势与投资战略研究报告
- 2025-2030煤矿行业竞争格局分析及投资前景与战略规划研究报告
- 2025-2030热流道系统行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2025-2030清酒行业市场现状供需分析及投资评估规划分析研究报告
- 【+初中语文+】《山地回忆》课件+统编版语文七年级下册
- 五年级英语下册 Unit 3 My school calendar Part B第二课时教学实录 人教PEP
- 2025-2030中国建筑装饰行业十四五发展分析及投资前景与战略规划研究报告
- 2025-2030中国奶牛智能项圈标签行业市场发展趋势与前景展望战略分析研究报告
- (一模)2025年广东省高三高考模拟测试 (一) 语文试卷语文试卷(含官方答案)
- 9.3-撒哈拉以南非洲 第2课时课件 七年级地理下册 人教版
- 2024年浙江省中考英语试题卷(含答案解析)
- 中医内科学智慧树知到答案2024年浙江中医药大学
- PEP人教版英语五年级下册 Unit 2 My favourite season大单元作业设计
- 8.6《林黛玉进贾府》课本剧剧本
- 发电机整体气密试验的要求
评论
0/150
提交评论