三元操作符

三元操作符的语法格式是这样的:

boolean-exp ? value0 : value1

上面这个表达式里面,如果boolean-exp表达式的执行结果为true,那么下一步就执行value0这个表达式,而且最终这整个三元表达式的结果就是vlaue0,否则就执行value1这个表达式,而且最终这整个三元表达式的结果就是vlaue1。

其实每个三元表达式都可以转化为if-else语法结构,但是由于三元表达式更加简洁明了,结构简单,所以遇到这种三元操作的情形,还是建议大家使用三元表达式,也就是三元操作符。

字符串操作符

我们之前学过操作符+和+=可以运用于数值运算,但是我们却不知道它还可以用于字符串操作,可以将多个字符串进行拼接,形成一个字符串,比如下面这个代码片段:

int n = 1, m = 2,l = 3;

String s = “s“;

print(s+n+m+3);

s +=”abc”;

print(s);

print(s+(n+m+l));

上面print(s+n+m+3);这句的代码执行结果就是s123,而不是s6,因为s是字符串类型,编译器会主动把n,m,l三个转为字符串,然后把四个拼接到一起打印出来。

第二句print(s);的执行结果是sabc,这是因+=会将右边的字符串拼接到左边字符串s上面,最终形成一个字符串。

最后一句print(s+(n+m+l))的结果是sabc6,这是因括号的存在,控制了表达式的赋值顺序,使得表达式会先执行括号里面的加法操作,得到n+m+l的结果为6,然后才将s这个字符串和6进行拼接,形成新的字符串sabc6。

类型转换

java语言中,我们允许将基本类型数据(除了布尔类型)转为别的基本类型数据,语法格式就是将需要转换的目标数据类型放到括号里,然后将要转换的数值放到括号左边,比如下面这个代码片段,就是将100这个整数类型转换为了long类型:

int l =100;

long n = (long)100;

long m = (long)l;

上面这个代码还说明了,类型转换既可以针对数值,也可以针对变量。但是类型转换不能针对普通对象。

但是需要注意的是,窄化转换(将容量大的数据类型转为容量小的类型)会有丢失数据的危险,但是扩展转换(将容量小的数据类型转为容量大的类型)就不用担心这种危险,扩展类型转换是安全的。

比如我们将一个浮点类型转为整数类型,就会自动执行截尾操作,比如:

float a = 0.6f;

print((int)a);

那么print((int)a);这句代码的输出就是0,自动将.6截取了。如果我们想四舍五入,就需要调用java.lang.Math类包里面的round()方法了。比如:

float a = 0.6f;

print(Math.round(a));

print(Math.round(a))的输出就是1;

类型提升

如果我们把容量较大的类型赋给容量较小的类型,必须执行类型转换,当然可能出现信息丢失,但是我们将容量较小的类型赋给容量较大的类型,就不需要显示的进行转换,JAVA语言会自动将容量较小的类型转为容量较大的类型,比如讲一个float值赋值给double类型,结果自然就是double,如果将一个short类型的数值和一个int类型的数值相乘,那么结果就是int类型,其他类型转换也是类似的。

vb.net 同时给多个属性赋值_一个float值赋值给double,结果是什么?进来重温一下类型提升吧...相关推荐

  1. java数组初始化赋值_数组初始化与赋值

    数组初始化与赋值 2009-09-17 如果有几个object,他们的类型是相同的.创建它们的时候,它们可能在堆里的各个散落位置产生,这样的话,存取效率就会不高.既然它们的类型是相同的,那么我们可以用 ...

  2. js 浅拷贝直接赋值_浅析JavaScript解析赋值、浅拷贝和深拷贝的区别

    一.赋值(Copy) 赋值是将某一数值或对象赋给某个变量的过程,分为: 1.基本数据类型:赋值,赋值之后两个变量互不影响 2.引用数据类型:赋**址**,两个变量具有相同的引用,指向同一个对象,相互之 ...

  3. java成员变量怎么赋值_给成员变量赋值的两种方法

    JAVA 跟C++ 差不多,给类里面的私有成员变量一般有两种方法: 一种是通过 成员函数 来赋值 一种是:通道构造函数来赋值 /* 我们一直在使用构造方法,但是,我们确没有定义构造方法,用的是哪里来的 ...

  4. vue img src 动态赋值_一个基于Vue的开源延迟加载插件——vuelazyload

    介绍 vue-lazyload是一个基于Vue的延迟加载插件,用于延迟加载Vue组件或者图像. Github https://github.com/hilongjw/vue-lazyload 特点 轻 ...

  5. vb.net 同时给多个属性赋值_系统小技巧:充分用好文件的时间属性

    在默认情况下,我们在Windows 10文件资源管理器中只能看到少量的关于文件时间属性的信息.其实,充分利用好系统自身的文件属性设置,或借助于小巧的第三方软件,就可以使用更多关于文件时间的信息. 1. ...

  6. vb.net 同时给多个属性赋值_C++程序入门之——赋值操作符

    赋值语句 前面已经说明,要访问内存,就需要相应的地址以表明访问哪块内存,而变量是一个映射,因此变量名就相当于一个地址.对于内存的操作,在一般情况下就只有读取内存中的数值和将数值写入内存(不考虑分配和释 ...

  7. json解析 子类和父类同名属性如何赋值_想学变量的解构赋值?看完这一篇就够了...

    序言 ES6允许按照一定模式从数组和对象中提取值,然后对变量进行复制,这被称为解构(Destructuring) 数组的解构赋值 基本用法 像上面的例子,可以从数组中提取值,按照对应位置对变量赋值,这 ...

  8. 对象属性结构赋值_(六)面向对象-下

    (六)面向对象-下 关键字:static static 可以用来修饰的结构:主要用来修饰类的内部结构 属性.方法.代码块.内部类 static修饰属性:静态变量(类变量 属性,是否使用static修饰 ...

  9. 定义一个 圆形 Circle类 , 定义其中的长度length属性,定义一个求面积getArea()的方法。 并编写一个测试类,进行长度的赋值和展示,并调用求面积方法展示面积值。

    定义一个 圆形 Circle类 , 定义其中的长度length属性,定义一个求面积getArea()的方法. 并编写一个测试类,进行长度的赋值和展示,并调用求面积方法展示面积值. public cla ...

最新文章

  1. 自动驾驶领域:一种实时高精度的城市道路场景语义分割方法
  2. 用户控件的后台代码关联使用CodeBehind还是CodeFile
  3. 开源创新、软件定义网络和网络功能虚拟化特性
  4. Scala enumeration
  5. c语言实现灰度图像阈值分割,灰度图像--图像分割 阈值处理之平均阈值
  6. 【python】性能分析工具汇总
  7. python怎么输出图片_python输出彩色图片python 时间处理
  8. 【白皮书分享】2021-2022内容营销平台价值洞察白皮书.pdf(附下载链接)
  9. 联想小新一键恢复小孔_联想机海真香预警!多款轻薄本平板来袭 学生/办公别错过...
  10. jcr多久更新一次_科学网—你知道吗,SCI影响因子数据在7月又有更新了 - LetPub编辑的博文...
  11. oracle中的游标的原理和使用详解
  12. HTML+CSS实现静态小米商城首页(附完整代码)
  13. u盘文件名乱码linux,U盘文件名乱码的原因和解决办法
  14. java调用考勤机_zkteco iface702 中控考勤机java开发步骤一---连接考勤机
  15. linux下动态域名的实践
  16. Spring_AOP代码修改_Introductions Advisors
  17. 监控系统首选DNS服务器,监控windows DNS服务器
  18. rhel配置DNS分析+实验
  19. P9:最大池化的使用
  20. SpringBoot配置文件(1)

热门文章

  1. C#中类的默认访问是私有的
  2. 使用可重启AD DS 整理活动目录数据库
  3. Oracle PL/SQL 存储过程
  4. 2-6 刮刮乐和双色球
  5. C#是一种垂死的语言吗?
  6. erdas遥感图像几何校正_【答疑】为什么要进行遥感图像处理?
  7. c 连接mysql总是失败_Windows 下用C++连接MYSQL失败
  8. Python+OpenCV:基于KNN手写数据OCR(OCR of Hand-written Data using kNN)
  9. Python+OpenCV:图像轮廓
  10. java中为什么同步_如何在Java中同步工作