77范文网 - 专业文章范例文档资料分享平台

java入门学习1(3)

来源:网络收集 时间:2019-03-22 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

图- 3

强制转化:从大类型到小类型需要强制转换符,语法如下: (需要转换成的类型)变量

因为大类型的精度值大于小类型,取值范围大于小类型,所以,当使用强制转化时,有可能会造成精度的损失或者溢出,所以,在使用强制转化时要求显式的告诉编译器,正在进行强制转换。

2.7.2. 强制转换时的精度丧失和溢出

基本类型转化如下示例所示,注意强制转换时可能会造成的精度丧失和溢出。 copytextpop-up int a = 100; int b = 200;

long c = a + b; //自动将int转化为long

long l1 = 1024l;

int i = (int) l1; //需要加强制转化符由于1024在int的范围内,所以没有产生溢出

long l = 1024L * 1024 * 1024 * 4;

int j = (int) l; //会产生溢出

System.out.println(j); // 结果为:0

double pi = 3.1415926535897932384;

float f = (float) pi; //会造成精度的损失,因为单精度的精确度小于double System.out.println(f); //结果为:3.1415927 int a = 100; int b = 200;

long c = a + b; //自动将int转化为long

long l1 = 1024l;

int i = (int) l1; //需要加强制转化符由于1024在int的范围内,所以没有产生溢出

long l = 1024L * 1024 * 1024 * 4; int j = (int) l; //会产生溢出

System.out.println(j); // 结果为:0

double pi = 3.1415926535897932384;

float f = (float) pi; //会造成精度的损失,因为单精度的精确度小于double System.out.println(f); //结果为:3.1415927 2.7.3. 数值运算时的自动转换

如果在一个表达式中出现了多种数据类型,则运算结果会自动的向较大的类型进行转化, 示例如下: copytextpop-up

//由于有long型的直接量参与,整个表达式的结果为long long distance = 10000 * 365 * 24 * 60 * 60 * 299792458l;

//由于有double型的直接量599.0参与,整个表达式的结果为 double double change = 800 - 599.0;

//结果为0.0,右边都是int型数据运算结果也为int类型,结果为0,再赋值给double 型,将0转化为 0.0

double persent1 = 80 / 100;

//结果为0.8,右边表达式有double型直接量参与, 运算结果为double型 double persent2 = 80.0 / 100;

//由于有long型的直接量参与,整个表达式的结果为long long distance = 10000 * 365 * 24 * 60 * 60 * 299792458l;

//由于有double型的直接量599.0参与,整个表达式的结果为 double double change = 800 - 599.0;

//结果为0.0,右边都是int型数据运算结果也为int类型,结果为0,再赋值给double 型,将0转化为 0.0

double persent1 = 80 / 100;

//结果为0.8,右边表达式有double型直接量参与, 运算结果为double型 double persent2 = 80.0 / 100;

2.7.4. byte、char、short转换为int

在前面所介绍的8种数据类型中,byte、char、short、int、long都表示整数类型,而整型的直接量为int,在实际使用中,为了方便使用,遵循了如下的规则:

int直接量可以直接赋值给byte、char和short,只要不超过其表示范围。示例如下: copytextpop-up byte b = 97; short s = 97; char c = 97; byte b = 97; short s = 97; char c = 97;

byte、char、short三种类型参与运算时,先一律转换成int类型再进行运算。示例如下: copytextpop-up byte b = 97;

int num = b + b; //num的值为194 byte b = 97;

int num = b + b; //num的值为194 3. 运算符和表达式-1 3.1. 算数运算

3.1.1. 使用%运算符

Java算术运算符除了通常的加(+)、减(-)、乘(*)、除(\\)之外,还包括取模运算(%)和自增(++)及自减(--)运算。+,-,*,/ 比较简单,实验一下即可。

取模运算(%)意为取余数,只能适用于整数及char类型。示例代码如下所示: copytextpop-up

// 输出255除以8所得的余数。 int n = 225;

System.out.println(n % 8); //结果为1 // 输出255除以8所得的余数。 int n = 225;

System.out.println(n % 8); //结果为1 3.1.2. 使用“++”和“--”运算符

Java的自增运算符(++)和自减运算符(--)继承自C++,可以使变量的值加1或减1,但其写在变量前和变量后有不同的效果:

如果写在变量前,表示在使用这个变量之前加1或减1 如果写在变量后,表示这个变量使用完之后再加1或减1 示例代码如下所示: copytextpop-up int a = 10, b = 20;

int c1 = a++; // 先将a的值赋给c1,然后a再自加 int c2 = ++b; // 先将b的值自加,然后再赋给c2

System.out.println(\// 输出的结果为: a=11, b=21, c1=10, c2=21 int a = 10, b = 20;

int c1 = a++; // 先将a的值赋给c1,然后a再自加 int c2 = ++b; // 先将b的值自加,然后再赋给c2

System.out.println(\

// 输出的结果为: a=11, b=21, c1=10, c2=21 3.2. 关系运算

3.2.1. 使用关系运算符

Java中的关系运算符用于判断数据之间的大小关系,包括大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、不等于(!=) 六个运算符。

在实际应用中常常使用,假设现在想实现转帐功能,输入转帐的金额,需要判断所转帐的金额是否大于当前帐户的金额,那结果只有两个,大于或不大于,在java语言中,使用boolean类型来表示这种是否的状态,如果关系成立为true,否则为false。示例代码如下所示: copytextpop-up int max = 10; int num = 9;

boolean b1 = max > 15;

boolean b2 = num%2 == 1;

System.out.println(b1); // 结果为false System.out.println(b2); // 结果为true int max = 10; int num = 9;

boolean b1 = max > 15;

boolean b2 = num%2 == 1;

System.out.println(b1); // 结果为false

System.out.println(b2); // 结果为true 3.3. 逻辑运算 3.3.1. 逻辑运算

前面的关系运算符是用于比较两个数值之间的大小关系的, 而逻辑运算符是用来进行逻辑运算的,它是建立在关系运算的基础之上的。当两个关系运算需要兼顾考虑时,可以使用逻辑运算符。

逻辑运算符包括:与(&&)、或(||)和非(!)。参与逻辑运算的变量或表达式都是boolean类型,运算结果也为boolean类型。逻辑运算规则如下图 - 4所示:

图- 4

通过分析可以看出:

当变量b1和变量b2同时为true时,&&表达式为true。 当变量b1和变量b2有一个为true时,||表达式为false。

!只有一个表达式,当b1为true时,!b1为false,b1为false时,!b1为true。 3.3.2. 使用“&&”运算符

两个boolean变量参与“&&”运算时,只有当两个变量均为true的时,运算结果才为true,否则结果为false。示例代码如下所示: copytextpop-up int score = 80;

boolean b = score >= 60 && score < 90; System.out.println(b);

// 结果为true,因为score的值同时满足大于等于60和小于90这两个条件,逻辑表达式“score >= 60”和“score < 90”的结果均为true,所以&&运算的结果即为true。 int score = 80;

boolean b = score >= 60 && score < 90; System.out.println(b);

// 结果为true,因为score的值同时满足大于等于60和小于90这两个条件,逻辑表达式“score >= 60”和“score < 90”的结果均为true,所以&&运算的结果即为true。 3.3.3. 使用“||”运算符

两个boolean变量参与“||”运算时,当两个变量有一个为true时,结果即为true,只有当两个变量均为false时结果为false。示例代码如下所示: copytextpop-up boolean flag = true; int n = 200;

boolean b1 = flag || (n >= 0 && n < 100); System.out.println(b1);

// 结果为true,上面这段代码中,表达式“flag || (n >= 0 && n < 100)”的含义是:当flag为true或者n在0到100之间(n大于等于0且小于100)时,结果为true,否则为false。根据flag和n的值,最后的运算结果为true。 boolean flag = true; int n = 200;

boolean b1 = flag || (n >= 0 && n < 100); System.out.println(b1);

// 结果为true,上面这段代码中,表达式“flag || (n >= 0 && n < 100)”的含义是:当flag为true或者n在0到100之间(n大于等于0且小于100)时,结果为true,否则为false。根据flag和n的值,最后的运算结果为true。

3.3.4. 使用“!”运算符

“!”运算相对简单,只有一个boolean变量参与运算,运算的值与该变量相反,变量为true时结果为false,变量为false是结果为true。示例代码如下所示: copytextpop-up boolean flag = true; int n = 200;

boolean b = !flag || (n >= 0 && n < 100); System.out.println(b);

// 结果为false,上面这段代码中,表达式“!flag || (n >= 0 && n < 100)”的含义是:当flag为false或者n在0到100之间(n大于等于0且小于100)时,结果为true,否则为false。根据flag和n的值,最后的运算结果为false。 boolean flag = true; int n = 200;

boolean b = !flag || (n >= 0 && n < 100); System.out.println(b);

// 结果为false,上面这段代码中,表达式“!flag || (n >= 0 && n < 100)”的含义是:当flag为false或者n在0到100之间(n大于等于0且小于100)时,结果为true,否则为false。根据flag和n的值,最后的运算结果为false。 3.3.5. 关于“短路逻辑”的问题

Java逻辑运算中的&&和||有短路的特性,当第一个关系表达式就可以判断出整个表达式的结果时,就不会再去判断后面的第二个表达式。 对于“&&”,当第一个操作数为false时,将不会判断第二个操作数,因为此时无论第二个操作数是什么最后的结果一定是false; 对于“||”,当第一个操作数为true时,将不会判断第二个操作数,因为此时无论第二个操作数为何,最后的运算结果一定是true。 示例代码如下所示: copytextpop-up int i = 100, j = 200;

boolean b1 = (i > j) && (i++ > 100);

System.out.println(b1); // 结果为:false

System.out.println(i); // 结果为:100,发生短路,i++不会被执行 boolean b2 = i > 0 || j++ > 200;

System.out.println(b2); // 结果为:true

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库java入门学习1(3)在线全文阅读。

java入门学习1(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/536605.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: