Java程序设计基础教程(慕课版)(第2版) 课件 第2单元 基本数据类型及运算符_第1页
Java程序设计基础教程(慕课版)(第2版) 课件 第2单元 基本数据类型及运算符_第2页
Java程序设计基础教程(慕课版)(第2版) 课件 第2单元 基本数据类型及运算符_第3页
Java程序设计基础教程(慕课版)(第2版) 课件 第2单元 基本数据类型及运算符_第4页
Java程序设计基础教程(慕课版)(第2版) 课件 第2单元 基本数据类型及运算符_第5页
已阅读5页,还剩38页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2单元基本数据类型及运算符Java程序设计基础教程((慕课版)(第2版))目录导航2.1基本数据类型2.3项目实战2.2运算符2.4单元小结2.1.1基本数据类型分类Java中的整型可以分为以下4种类型。基本型:用int表示。

短整型:用short表示。

长整型:用long表示。

字节型:用byte表示。01OPTION整型Java的基本数据类型可以分为三大类,分别是字符型(char)、布尔型(boolean)和数值类型(byte、short、int、long、float和double),数值类型又分为整型(byte、short、int和long)和浮点型(float和double)。数据类型内存占用大小取值范围byte8位(1个字节)-128~127short16位(2个字节)-32768~32767int32位(4个字节)-231~231-1long64位(8个字节)-263~263-1表2-1Java中整型的内存占用大小及取值范围2.1.1基本数据类型分类Java的数据类型是以补码的形式存放在内存中的。以short为例,它有16位,能存储的最小数是:这个数是-216,换算成十进制数就是-32768。

它能存储的最大数是:这个数是216-1,换算成十进制数就是32767。其他数据类型的取值及其与十进制数之间的转换方式与此相似,读者可以按照这个方式进行换算。在Java中,高位是符号位,1表示负数,0表示整数。2.1.1基本数据类型分类Java使用浮点型来表示实数。浮点型也有两种:单精度浮点型和双精度浮点型,分别使用float和double来表示。浮点型的相关说明如表2-2所示。02OPTION浮点型表2-2浮点型的相关说明数据类型内存占用大小有效数字取值范围float32位(4个字节)7个十进制位约±3.4×1038double64位(8个字节)15~16个十进制位约±1.8×10308Java中的浮点型是按照IEEE(InstituteofElectricalquelElectronicsEngineers,电气与电子工程师协会)754标准存放的。值得注意的是,程序开发中需要将整数当作一种类型,将实数当作另一种类型,因为整数和实数在计算机内存中的表示方法截然不同:整数是精确存储的,而实数只是存储近似值。2.1.1基本数据类型分类Java中的字符型用char来表示。和C/C++不同的是,它使用2个字节(16位)来存储一个字符,而且存放的并非ASCII值而是Unicode值。Unicode是一种在计算机上使用的字符编码,其为每种语言定义了统一且唯一的二进制编码,以满足跨语言、跨平台进行文本转换处理的需求。Unicode值和ASCII值是兼容的,所有的ASCII字符都可通过在高字节位添加0,成为Unicode值。例如,a的ASCII值是0x61,在Unicode中,其编码是0x0061。03OPTION字符型布尔型使用boolean来表示,它的值只有true和false。布尔型是用来处理逻辑的,又被称为逻辑类型,true和false分别表示条件成立和条件不成立。04OPTION布尔型2.1.2基本数据类型的拆装箱基本数据类型的数据可以作为变量(Variable)存储在计算机内存中。变量是有名称和数据类型的内存空间,用于存储值。01OPTION变量声明变量02OPTION变量的存在就是为了告诉程序我是谁和我的数据类型是什么。所以,你需要发表一个声明,告诉程序你要声明一个变量,这个变量叫什么,将要存储什么类型的数据,如下所示:<类型><名称>;需要注意的是,每个变量名称只能声明一次,否则Java编译器会报错。类型可以使用Java的8种基本数据类型的名字来表示。变量一旦声明了,Java就会为它分配一段内存空间来存储它的值,但是仅声明变量并不能让Java向变量对应的内存空间存放初始值。仅声明的变量被称为未初始化的变量,这种变量需要对其进行赋值操作之后才能使用。2.1.2基本数据类型的拆装箱变量的赋值使用“=”表示,该符号用于告诉JVM将后面的值交给前面的变量进行保存。需要注意的是,变量在进行赋值操作会执行类型安全检查。如果你定义的变量是char类型的,但赋予该变量一个boolean类型的值,Java编译器就会抛出异常。03OPTION变量赋值<variable>=<expression>;赋值语句可以与声明语句同时使用,即你可在声明一个变量的时候就为这个变量赋值:<type><variable>=<expression>;例如,你可以声明一个int类型的变量,其名称是height,其值是180:intheight=180;与变量相对的是常量。常量的值在程序运行过程中不能被改变。这一点是不同于变量的,变量的值是可以根据需要进行改变的。任务2-1常量和变量文件ConstantAndVariablesDemo.java序号程序代码010203040506070809101112131415161718publicclassConstantAndVariablesDemo{publicstaticvoidmain(String[]args){finalintMALE=1;//定义常量MALE表示男性,常量需要在声明时赋值intage;//声明age,其类型是intintheight=180;//声明height,其类型是int,并赋值为180//age未定义,所以此处会抛出错误//System.out.println("MALE="+MALE+";age="+age+";height="+height);age=20;//给age赋值//输出System.out.println("MALE="+MALE+";age="+age+";height="+height);height=177;//变量重新赋值System.out.println("MALE="+MALE+";age="+age+";height="+height);//MALE=0;//常量无法重新赋值}}运行结果如图2-1所示。任务2-2基本数据类型的拆装箱文件AssemblyAndDisDemo.java序号程序代码0102030405060708091011121314publicclassAssemblyAndDisDemo{publicstaticvoidmain(String[]args){intage=39;//定义基本数据类型变量IntegerageNor=38;//定义包装类变量//输出System.out.println("age="+age+",ageNor="+ageNor);inttemp=age;//将基本数据类型变量赋给一个临时变量age=ageNor;//将包装类变量赋给基本数据类型变量ageNor=temp;//将基本数据类型变量赋给一个包装类变量//输出System.out.println("age="+age+",ageNor="+ageNor);}}运行结果如图2-2所示。任务2-3获取基本数据类型的取值范围文件BasicValueDemo.java序号程序代码0102030405060708091011121314151617publicclassBasicValueDemo{publicstaticvoidmain(String[]args){//整型System.out.println("byte类型的最大值:"+Byte.MAX_VALUE+";最小值:"+Byte.MIN_VALUE);System.out.println("short类型的最大值:"+Short.MAX_VALUE+";最小值:"+Short.MIN_VALUE);System.out.println("int类型的最大值:"+Integer.MAX_VALUE+";最小值:"+Integer.MIN_VALUE);System.out.println("long类型的最大值:"+Long.MAX_VALUE+";最小值:"+Long.MIN_VALUE);//浮点型System.out.println("float类型的最大值:"+Float.MAX_VALUE+";最小值:"+Float.MIN_VALUE);System.out.println("double类型的最大值:"+Double.MAX_VALUE+";最小值:"+Double.MIN_VALUE);//布尔型System.out.println("boolean类型的true:"+Boolean.TRUE+";false:"+Boolean.FALSE);//字符型System.out.println("char类型的最大值:"+(int)(Character.MAX_VALUE)+";最小值:"+(int)(Character.MIN_VALUE));}}任务2-2基本数据类型的拆装箱运行结果如图2-3所示。包装类的名称一般是将对应基本数据类型的名称改为首字母大写。但int类型和char类型较为特殊,其对应的包装类分别是Integer和Character。通过包装类的基本方法可以获取其对应的基本数据类型的阈值。任务2-4包装类的转换方法文件AssemblyParseDemo.java序号程序代码0102030405060708091011121314publicclassAssemblyParseDemo{publicstaticvoidmain(String[]args){//定义String类型的变量,一个是整型的100,一个是浮点型的99.88StringintValue="100";StringdoubleValue="99.88";byteb=Byte.parseByte(intValue);//将字符串转换成byte类型的数据shorts=Short.parseShort(intValue);//将字符串转换成short类型的数据inti=Integer.parseInt(intValue);//将字符串转换成int类型的数据System.out.println("b="+b+";s="+s+";i="+i);//输出floatf=Float.parseFloat(doubleValue);//将字符串转换成float类型的数据doubled=Double.parseDouble(doubleValue);//将字符串转换成double类型的数据System.out.println("f="+f+";d="+d);//输出}}运行结果如图2-4所示。2.1.3拓展:parseInt()方法和valueOf()方法的使用Integer的parseInt()和valueOf()方法都可以将字符串转换成Integer类型的值。在对字符串的处理方面,valueOf()一般会调用parseInt()方法,但是何时使用parseInt(),何时使用valueOf()呢?此时需要深入查看API,通过查看API不难发现:publicstaticIntegervalueOf(Strings)throwsNumberFormatException{returnInteger.valueOf(parseInt(s,10));}其实valueOf()方法最终还是需要使用parseInt()方法的,这里还用到了valueOf()方法。进入这个方法,可以看到如下内容:publicstaticIntegervalueOf(inti){if(i>=IntegerCache.low&&i<=IntegerCache.high)returnIntegerCache.cache[i+(-IntegerCache.low)];returnnewInteger(i);}此处发现了IntegerCache。从代码中可以看出,IntegerCache是一个已经预先初始化的数字常量池:staticfinalintlow=-128;staticfinalinthigh;…inth=127;…for(intk=0;k<cache.length;k++)cache[k]=newInteger(j++);目录导航2.1基本数据类型2.3项目实战2.2运算符2.4单元小结2.2运算符Java中的运算符共36种,依照运算类型可以分为六大类,包含算术运算符、关系运算符、逻辑运算符、条件运算符、位运算符和赋值运算符。这6种运算的说明如表2-3所示。类型运算符算术运算符+、-、*、/、%、++、--关系运算符>、<、==、>=、<=、!=逻辑运算符!、&&、||条件运算符?:位运算符<<、>>、>>>、^、~、|、&赋值运算符=、+=、-=、*=、/=、&=、|=、^=、%=、<<=、>>=、>>>=表2-3Java中的运算符2.2.1算术运算符算术运算就是我们日常生活中所说的加减乘除等运算,在计算机中还有取余运算和自增自减运算。在基本数据类型中,boolean类型无法进行算术运算。我们在2.1节中介绍了基本数据类型中除了boolean外的其他几种类型。需要注意的是,精度小于int类型精度的数据在做加减乘除运算时,会使用int类型进行计算,同时将表达式中精度最高的操作数的数据类型作为结果的类型。1.加减运算在基本数据类型中,“+”和“-”与普通数学中的用法一致。因为符号左右都需要一个操作数,所以加减运算也称双目运算,其一般语法格式是:<expr1>+<expr2><expr1>-<expr2>加减运算的具体应用请参看任务2-5。任务2-5加减运算publicclassAddAndMinus{publicstaticvoidmain(String[]args){charch1='c';charch2='d';shorts1=10;shorts2=12;inti1=100;inti2=20;//charch3=ch1+ch2;//编译器报异常inti3=ch1+ch2;//shorts3=s1+s2;//编译器报异常inti4=s1+s2;//charch4=i1+i2;//编译器报异常inti5=i1+i2;System.out.println("i3="+i3);System.out.println("i4="+i4);System.out.println("i5="+i5);//int类型数据与float类型数据的和是float类型的数据floatf1=3.0F;System.out.println("i1+f1="+(i1+f1));}}文件AddAndMinus.java运行结果如图2-5所示。从任务2-5中不难发现,char类型数据和short类型数据在做运算的时候其结果是int类型的数据。这并非由于Java中的精度安全机制,而是由于JVM中存储长度小于int类型的数据时是使用int类型的,这样就避免了过多的数据类型而增加额外的开销,同时简化了数据操作。2.2.1算术运算符2.正负值运算需要注意的是,“+”和“-”并非在所有的情况下都是加减运算符,它们有时候也是正负值的标识。这个标识和数学中的使用方式一致,即标识常量或数字的正负性,例如-1、+a、-b等。正负值运算只有右侧有值,所以是单目运算,这一点有别于加减运算。正负值运算另一个要关注的点是:这两个运算符只是标识,并不能改变操作数本身。例如,对于a=1,如果我们执行-a操作,a还是等于1,而非-1。正负值运算的一般语法格式是:+<expr1>-<expr1>3.乘除运算Java中的乘法运算符是“*”,除法运算符是“/”。同加减运算一样,其运算符左右必须有值。乘除运算也是双目运算,其用法也与数学中的用法一致。乘除运算的具体应用请参看任务2-6。+<expr1>-<expr1>任务2-6乘除运算publicclassMultipAndDivide{publicstaticvoidmain(String[]args){System.out.println("5/3="+(5/3));System.out.println("5*3="+(5*3));System.out.println("5/3.0="+(5/3.0));System.out.println("5*3.0="+(5*3.0));System.out.println("5.0/3="+(5.0/3));System.out.println("5.0*3*3="+(5.0*3*3));}}文件MultipAndDivide.java运行结果如图2-6所示。4.取余运算取余运算的运算符是“%”。取余运算也是双目运算,和数学中的取余运算一致,其表达式为:<expr1>%<expr2>取余运算实际上相当于:<expr1>-(expr1/expr2)*expr2任务2-7取余运算publicclassRemainderDemo{publicstaticvoidmain(String[]args){System.out.println("5%3="+(5%3));System.out.println("5%-3="+(5%-3));System.out.println("-5%3="+(-5%3));System.out.println("-5%-3="+(-5%-3));System.out.println("5%3.0="+(5%3.0));System.out.println("5.0%3="+(5.0%3));System.out.println("5.0%3.1="+(5.0%3.1));System.out.println("-5.1%3.1="+(-5.1%3.1));System.out.println("-5.2%-3.1="+(-5.2%-3.1));}}文件RemainderDemo.java运行结果如图2-7所示。从任务2-7中可以看出,取余运算的余数的正负与被除数的正负相同,其类型与除数与被除数中精度较大的数据类型相同。同时,进行浮点型数值的取余运算时,将被除数与除数进行整除后,用被除数减去除数与整除值的乘积得到余数。所以,5.2%3.1的运算过程和结果就是:5.2-3.1*1=2.1。这与C语言中的fmod()函数的计算方法是一致的。2.2.1算术运算符5.自增自减运算自增和自减运算的运算符分别是“++”和“--”。和正负号一样,自增自减运算符也是单目运算符。它们唯一的区别是:自增自减运算符会改变变量的值,该运算符只对变量有效,对常量无效。自增自减运算符可以在变量的前面,称为前缀;也可以在变量的后面,称为后缀。前缀和后缀在计算方式上会有所不同。任务2-8自增自减运算文件AutoIncrAndDecrDemo.javapublicclassAutoIncrAndDecrDemo{publicstaticvoidmain(String[]args){inta=1;intb=1;intc=++a;//前自增intd=--b;//前自减System.out.println("a="+a+",b="+b+",c="+c+",d="+d);c=a++;//后自增d=b--;//后自减System.out.println("a="+a+",b="+b+",c="+c+",d="+d);}}运行结果如图2-8所示。2.2.2关系运算符和逻辑运算符关系运算因为是对两个操作数的关系进行判断,所以是双目运算。在Java中,关系运算符有相等运算符“==”、不相等运算符“!=”和大小关系运算符“>”“<”“>=”“<=”。关系运算的操作数可以是一个数值,也可以是一个表达式。需要注意的是,关系运算符左右的数据必须是相同或者相容类型的数据或者表达式。其中,相等与不相等运算符可以使用布尔型数据或表达式作为操作数,但大小关系运算符的操作数只能是整型或者浮点型数据或表达式。

相等运算符的一般语法格式是:01OPTION关系运算符<expr1>==<expr2>表达式也能作为其比较对象,操作数也可以是布尔型的。例如如下语句:5==3(a*3)==(b–2)(a==3)==truetrue==true如果表达式两侧的值是相等的,则返回true,否则返回false。2.2.2关系运算符和逻辑运算符不相等表达式0的运算符是“!=”,其一般语法格是:<expr1>!=<expr2>5!=3true!=false(3+a)!=(b–6)(5==3)!=true不相等运算符的两侧可以是相等或者相容类型的数据,支持布尔型数据的判断。例如如下语句:不相等表达式与相等表达式得到的结果相反。如果表达式相等,则返回false,否则返回true。Java中的大小关系运算符有4个,即“>”(大于)、“<”(小于)、“>=”(大于或等于)和“<=”(小于或等于),其一般语法格式是:<expr1><大小关系运算符><expr2>大小关系运算符与现代代数中对应符号的规则完全相同。参与大小关系运算的操作数可以是整型和浮点型。如果类型不相同,会首先进行自动类型转换,然后进行关系判断。2.2.2关系运算符和逻辑运算符Java中的逻辑运算有3种:与运算、或运算和非运算(也叫取反运算)。我们将参与逻辑运算的数据对象称为逻辑量,将用逻辑运算符连接起来的式子称为逻辑表达式。逻辑表达式的值又称逻辑值,参与逻辑运算的操作数必须是布尔型的数据或者表达式。逻辑运算除了逻辑非运算外都是双目运算,逻辑非运算是单目运算。02OPTION逻辑运算符01逻辑与运算逻辑与运算的运算符是“&&”,其语法格式是:<expr1>&&<expr2>expr1expr2expr1&&expr2truetruetruefalsetruefalsetruefalsefalsefalsefalsefalse表2-4逻辑与运算的真值表2.2.2关系运算符和逻辑运算符02逻辑或运算逻辑或运算的运算符是“||”,其表达式的一般形式是:<expr1>||<expr2>表2-5逻辑或运算的真值表expr1expr2expr1||expr2truetruetruefalsetruetruetruefalsetruefalsefalsefalse03逻辑非运算逻辑非运算的运算符是“!”,它是单目运算,其语法格式一般为:!<expr1>因为关系运算是双目运算,此处必须用括号“()”将表达式括起来,否则编译器会报错。任务2-9逻辑与运算和逻辑或运算publicclassAnd_OrDemo{publicstaticvoidmain(String[]args){inta=3;intb=5;//因为a+b=8,所以无须执行a++表达式booleanbool1=a+b<7&&a++<9;System.out.println("a="+a+",b="+b+",bool1="+bool1);//因为a+b<9成立,所以执行b++表达式bool1=a+b<9&&b++>7;System.out.println("a="+a+",b="+b+",bool1="+bool1);//因为a<4成立,所以不执行a--表达式bool1=a<4||a-->3;System.out.println("a="+a+",b="+b+",bool1="+bool1);//因为a>5不成立,所以执行a++表达式

bool1=a>5||a++>1;System.out.println("a="+a+",b="+b+",bool1="+bool1);}}文件And_OrDemo.java运行结果如图2-9所示。关系表达式和逻辑表达式的值都是true或false,是boolean类型,所以它们一般被用在控制执行流程中,例如if()语句、while()语句等,作为控制条件。控制执行流程将在第3单元进行讲解。2.2.3赋值运算符与条件运算符Java中的赋值运算符有两种:对于简单的赋值运算,使用简单赋值运算符“=”;对于复杂的赋值运算,将“=”与其他运算符复合在一起形成复合赋值运算符,如“+=”和“%=”等。赋值运算符01OPTION01简单赋值运算符简单赋值运算符是“=”,其赋值语法格式如下:a=b+1;在Java中,所谓的赋值,其物理意义就是将赋值运算右侧操作数的值存放到左侧操作数所标识的存储单元中。赋值运算具有右结合性,也就是说:a=b=c=1;可以理解成:a=(b=(c=1));在Java中,赋值语句右侧的执行顺序是从左向右的,例如:a=++b+b--;02复合赋值运算符在程序设计中,类似下面的表达式是常见的:a=a+b;此类运算的特点是参与运算的量既是运算分量也是存储对象。2.2.3赋值运算符与条件运算符为了避免对同一存储对象的地址反复计算,Java引入了复合赋值运算符,凡是双目运算都可以与赋值运算组合成复合赋值运算。复合赋值运算符有11种,它们的存在提升了编译的效率:+=、-=、*+、/=、%=、<<=、>>=、>>>=、&=、^=、|=其对应的运算语义如下:x+=6;等效于x=x+6;z*=x+y等效于z=z*(x+y)m+=n-=q+1等效于m=m+(n=n-(q+1))x/=6等效于x=x/6x%=6等效于x=x%6x<<=1等效于x=x<<1x>>=1等效于x=x>>1x>>>=1等效于x=x>>>1x&=y等效于x=x&yx^=y等效于x=x^yx|=y等效于x=x|y2.2.3赋值运算符与条件运算符条件运算符又称三目运算符,其一般语法格式如下:条件运算符02OPTION<expr1>?<expr2>:<expr3>三目运算符的语义是:如果表达式expr1是true,则返回expr2,否则返回expr3。三目运算符同逻辑运算符一样也能控制子表达式的求值顺序。三目运算符的另一个优势是:其子表达式也可以是一个三目运算表达式:x%3==0?“3的倍数”:x%2==0?“偶数”:“基数”三目运算符在取多个数的最大值和最小值时非常有效,如下:inta=10;intb=12;intc=20;intmax=a<b?b<c?c:b:a<c?c:a;2.2.4位运算符<<是左移运算符,左移操作是将一个数的二进制码整体向左移动指定的位数,左边移除的位被丢弃,并在右边空出的位上补0。左移操作相当于将原数乘以2的n次方,其中n是移动的位数。>>是右移运算符,右移操作是将一个数的二进制码整体向右移动指定的位数,右边移除的位被丢弃,左边空出的位根据原有数值的符号位来补充。即针对正数的位移,左边空出的位会补0;针对负数的位移,左边空出的位会补1。右移操作相当于将原数除以2的n次方,其中n是移动的位数。>>>是无符号右移运算符。无符号右移操作和右移操作类似,区别在于无符号右移不考虑符号位,右边移除的位被丢弃,左边空出的位始终补0。对于正数,无符号右移操作的结果和右移操作一致,对于负数则不同。01OPTION<<、>>、>>>2.2.4位运算符^、~、|、&02OPTION^是异或运算符,用于对两个整数的二进制码按位进行比较。如果同一位置的两个比特值相等,则将该位置为0;如果同一位置的两个比特值不相等,则将该位置为1。~是按位取反运算符,用于对一个整数的二进制码的所有位数进行取反操作,即将所有的0变为1,将所有的1变成0。|是按位或运算符,用于对两个整数的二进制码按位进行比较。如果同一位置的两个比特值有一个为1,则结果位就为1,否则为0。&是按位与运算符,用于对两个整数的二进制码按位进行比较。如果同一位置的两个比特值都为1,则结果位就为1,否则为0。2.2.5运算符的优先级当一个表达式包含多个运算符的时候,表达式的求值顺序由3个因素决定,分别是运算符的优先级、运算符的结合性和是否控制求值顺序(指Java中的3个运算符:逻辑与运算符&&、逻辑或运算符||和条件运算符?:)。除了这3个特殊的运算符,Java中求值顺序的基本原则是:两个相邻运算符的计算顺序由它们的优先级决定;如果它们的优先级相同,那么结合性就决定了它们的求值顺序;如果使用了圆括号“()”,那么它具有最高优先级。注意:“()(小括号)”“.(点号)”“[](中括号)”“{}(大括号)”“,(英文逗号)”“,(中文逗号)”在Java中都是分隔符,不是运算符,其中“()”可以改变表达式的求值顺序。若有多个括号,则先根据自左向右的顺序处理括号内的表达式,然后根据结合性进行求值。2.2.5运算符的优先级表2-6Java中运算符的优先级和结合性运算符优先级结合性++、--、!、~1从右向左*、/、%2从左向右+、-3从左向右>>>、>>、<<4从左向右>、>=、<、<=5从左向右==、!=6从左向右&7从左向右^8从左向右|9从左向右&&10从左向右||11从左向右?:12从右向左=、+=、-=、*=、/=、%=、>>=、>>>=、<<=、&=、^=、|=13从右向左2.2.5运算符的优先级在程序中有一个很容易混淆的表达式是:a+++b;因为这个式子可以理解成:(a++)+b;或者:a+(++b);计算机的特性使其拒绝歧义,所以Java专门规定了它的处理方法。Java在从左到右扫描运算符时,会尽可能多地扫描字符,以匹配成一个合法的运算符,因此“a+++b”会被处理成“(a++)+b”。对于任何一个双目运算,Java明确规定:左侧操作数先求值,右侧操作数后求值。任务2-10双目运算的求值顺序publicclassInTurnDemo{publicstaticvoidmain(String[]args){inta=10;//相当于a=a+(a=3),所以a=10+3a+=a=3;System.out.println("a="+a);intb=2;//相当于b=3*3b=(b=3)*b;System.out.println("b="+b);}}文件InTurnDemo.java运行结果如图2-10所示。目录导航2.1基本数据类型2.3项目实战2.2运算符2.4单元小结项目2-1设计IP地址转换程序在程序开发中可能会碰到要求将IP地址转换成long类型的整数,或者将long类型的整数转换成IP地址的情况。本项目将通过一个例子演示如何通过位运算符进行数据的转换。step01

首先将IP地址转换成long类型的整数,转换原理是对各个位置进行加权求和。一般情况下,IP地址是使用“.”分隔的字符串,我们可以通过String类的split()方法将字符串按指定字符分隔成字符串数组(第4单元将会详细介绍字符串以及字符串的内置方法)。通过long类的parseLong()方法可以将字符串转。换成long类型,然后对各个部分进行加权求和。step02

其次将整数转换成IP地址。将数字转换成IP地址稍微复杂

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论