类型转换

强制类型转换

强颜欢笑 提交于 2019-11-29 09:48:16
强制类型转换:无法自动转换为我们需要的类型,可以用强制类型转换,比如上例可以这样完成: int i=(int)3.0; 数字前面的(int)表示转换的目标类型为int,3.0会被强制转换为3。 需要注意, double 型强制转换为int型将失去小数部分,比如(int)2.8,我们得到的将是2。 来源: https://www.cnblogs.com/xiaochunblog/p/11511443.html

类型转换

此生再无相见时 提交于 2019-11-29 08:36:36
显式转换 原始值 / 转换目标 布尔值 字符串 数字 Number 除 0, -0, NaN 都为 true 0 => "0" -- String 除空字符串外都为 true -- NaN / 数字 Boolean -- "true" / "false" true => 1 false => 0 Undefined False "undefined" NaN null False "null" 0 Symbol True let sym = Symbol(1); => "Symbol(1)" 报错 函数 True function func(){}; => "function func(){}" NaN 数组 True [] => "" ; [1, 2] => "1, 2" 首先将数组转换成字符串, 再将字符串转为数字 对象 True "[object Object]" NaN 隐式类型转换 算数运算符 (+、-、*、/ 、++、--、%...) '+'作为一个双目运算符 : 若 + 存在一个 字符串 , 则将另一个值也转为 字符串 来进行字符串拼接。 其他情况下都将参数转换为 数值 类型进行运算 关系运算符 (>、<、==、!、!= ) ===、!== : 同时比较类型和值。 ==、 != : 只比较值,不比较类型。 引用类型比较引用关系 布尔值 与 数字 , 字符串 比较时,

C++ explicit

强颜欢笑 提交于 2019-11-29 06:37:43
C++ explicit explicit关键字,通常用来修饰构造函数,防止隐式转换的发生。 在C++中,我们有时可以将构造函数用作自动类型转换函数。但这种自动特性并非总是合乎要求的,有时会导致意外的类型转换,因此,C++新增了关键字explicit,用于关闭这种自动特性。即被explicit关键字修饰的类构造函数,不能进行自动地隐式类型转换,只能显式地进行类型转换。 注意:只有一个参数的构造函数,或者构造函数有n个参数,但有n-1个参数提供了默认值,这样的情况才能进行类型转换。 下面通过一段代码演示具体应用(无explicit情形): /* 示例代码1 */ class Demo { public: Demo();                /* 构造函数1 */ Demo(double a);             /* 示例代码2 */ Demo(int a,double b);         /* 示例代码3 */ Demo(int a,int b=10,double c=1.6);  /* 示例代码4 */ ~Demo(); void Func(void); private: int value1; int value2; }; 上述四种构造函数: 构造函数1没有参数,无法进行类型转换! 构造函数2有一个参数,可以进行类型转换,如:Demo test; test

运行时需要注意的问题

无人久伴 提交于 2019-11-29 05:56:54
JDK1.5后,可以使用类似C语言的输出控制格式 在Java中, double和float 都用 %f 输出 int , long int, short, byte都用%d输出 int , long int也可用%x, %#x , %X , %#X,转换为16进制输出 一个整型常量默认是int类型,如果数字过大,则必须在末尾加L,否则会报错 比如: 1 long i = 6512315646454654654879; //报错 2 3 long i = 6512315646454654654879L; //正确 一个实数默认是double类型,如果希望一个实数是float类型,可以在数字后面加 f 或者 F 将一个double类型数值赋给float类型变量,编译是会报错 比如: 1 float x - 2.2; //报错 2 3 float x = 2.2f; //正确 源文件命名规则: 源文件中最多只能有一个Public类,源文件的名字必须与public类的名字相同 若没有public类,源文件名只需要和某一个类命相同 在DOS窗口运行java程序注意点: 比如有一个 public Test{} javac Test.java 编译时必须写文件名和扩展名(public类名) java Test 运行时只写文件中的主类名(主方法所在的类),不写扩展名 数据类型的转换:

C,C+和C++它们有什么区别

早过忘川 提交于 2019-11-29 04:43:34
只有C语言和C++语言,没有C+语言。 1、出现时间不同 C++是C的超集,也可以说C是C++的子集,因为C先出现。按常理说,C++编译器能够编译任何C程序,但是C和C++还是有一些小差别。 例如C++增加了C不具有的关键字。这些关键字能作为函数和变量的标识符在C程序中使用,尽管C++包含了所有的C,但显然没有任何C++编译器能编译这样的C程序。 2、C程序可以省略函数原型,而C++不可以 一个不带参数的C函数原型必须把void写出来。而C++可以使用空参数列表。C++中new和delete是对内存分配的运算符,取代了C中的malloc和free。标准C++中的字符串类取代了C标准C函数库头文件中的字符数组处理函数(C中没有字符串类型)。 C++中用来做控制态输入输出的iostream类库替代了标准C中的stdio函数库。C++中的try/catch/throw异常处理机制取代了标准C中的setjmp()和longjmp()函数。 3、关键字和变量不同 在C++中还增加了bool型变量和wchar_t型变量:布尔型变量是有两种逻辑状态的变量,它包含两个值:真和假。如果在表达式中使用了布尔型变量。 那么将根据变量值的真假而赋予整型值1或0。要把一个整型变量转换成布尔型变量,如果整型值为0,则其布尔型值为假;反之如果整型值为非0,则其布尔型值为真。布儿型变量在运行时通常用做标志

数据类型转换之强制类型转换

[亡魂溺海] 提交于 2019-11-29 03:16:42
二、 强制类型转换 1. 特点 :代码需要进行特殊的格式处理,不能自动完成。 2. 规则 : 数据范围从大到小 。 3. 格式 : 范围小的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据 ; 强制类型转换代码 : 1 public class Demo02DataType { 2 public static void main(String[] args) { 3 // 左边是int类型,右边是long类型,不一样 4 // long --> int,不是从小到大 5 // 不能发生自动类型转换! 6 // 格式:范围小的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据; 7 int num = (int) 100L; 8 System.out.println(num); 9 } 输出结果:   100 来源: https://www.cnblogs.com/chenliqiang/p/11441872.html

数据类型转换之自动类型转换

感情迁移 提交于 2019-11-29 03:16:09
当数据类型不一样时,将会发生数据类型转换。 自动类型转换(隐式) 1. 特点 :代码不需要进行特殊处理,自动完成。 2. 规则 : 数据范围从小到大 。 强制类型转换(显式) 一、 自动类型转换代码 1 public class Demo01DataType { 2 public static void main(String[] args) { 3 System.out.println(1024); // 这就是一个整数,默认就是int类型 4 System.out.println(3.14); // 这就是一个浮点数,默认就是double类型 5 6 // 左边是long类型,右边是默认的int类型,左右不一样 7 // 一个等号代表赋值,将右侧的int常量,交给左侧的long变量进行存储 8 // int --> long,符合了数据范围从小到大的要求 9 // 这一行代码发生了自动类型转换。 10 long num1 = 100; 11 System.out.println(num1); // 100 12 13 // 左边是double类型,右边是float类型,左右不一样 14 // float --> double,符合从小到大的规则 15 // 也发生了自动类型转换 16 double num2 = 2.5F; 17 System.out.println(num2)

Spring MVC 类型转换 Converter接口

跟風遠走 提交于 2019-11-29 03:11:24
-1:Converter 一个我们一直在使用却不知道的接口 0:Converter接口 接口作用: 当添加了一个实现converter接口的类,并添加到spring容器时。Controller接收的数据会自动转换为想要的类型 1:Converter的完整路径是 org.springframework.core.convert.converter.Converter 2:使用方法 public class ConverTest implements Converter<String, Date> 自定义类实现 Converter接口,String 是原始数据类型,Date是要转换的数据类型。重写convert方法,并加上@Service注解 比如 在重写的方法中 你用 SimpleDateFormat 把格式 2019-01-23 的数据转换date 3:这时前端 传值 2019-01-23 ,就可以直接用date类型接收。 4:springmvc其实已经实现了许多类型转换,比如前端传 1,用 int 就能接收到,其实这就是用了自带的Converter,springmvc同样自带字符串时间转换,默认类型是 2019/01/23 ,还有字符串用“,”分隔,就可以用字符串数组接收。 来源: oschina 链接: https://my.oschina.net/u/3394093/blog

C#类型转换

百般思念 提交于 2019-11-29 02:17:08
  一、由于C#是强类型语言,变量在声明后不能重新声明为其它类型,但可以通过类型转换(Type Conversion)将符合转换条件的其它类型的变量转换为目标类型的变量,有以下几种类型的转换方式:   二.隐式转换(Implicit Conversion):该转换是一种安全的类型转换,不会导致数据丢失,因此不需要任何显式操作;从较低精度/较小范围类型到较高精度/较大范围类型的转换以及从派生类到基类和所实现接口的转换都是隐式转换;   1.隐式转换在代码中不需要任何显式操作,对于值类型: double myDouble = 1f; //1   ※所有数值类型之间的隐式转换关系详见;   2.对于引用类型,一种类型的变量或对象可以直接隐式转换为任何一个直接或间接基类和所实现接口类型的变量: public class MyBaseClass { } public interface IMyInterface { } public class MyClass : MyBaseClass, IMyInterface { } MyClass myClass = new MyClass(); MyBaseClass myBaseClass = myClass; //派生类变量隐式转换为基类变量 IMyInterface myInterface = new MyClass(); /

算数运算符

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-29 02:05:17
C语言里的算数用算符 + 加法运算符 - 减法运算符,或负值运算符 * 乘法运算符 / 除法运算符 % 模运算符,或称取余运算符,要求%两侧均为整型数据 运算顺序 1> 算术表达式 用算术运算符将数据连接起来的式子,称为“算术表达式”。比如a + b、10 * 5等。如果表达式比较复杂的话,那么就要注意一下它的运算顺序。表达式的运算顺序是按照运算符的结合方向和优先级进行的。 2> 结合方向 算术运算符的结合方向是从左到右。例如表达式2+3+4,先计算2+3。 3> 优先级 优先级越高,就越先结合,此时并没有参与运算仅仅是操作符与操作数结合到了一起: 负值运算符(-) > 乘(*)、除(/)、模(%)运算符 > 加(+)、减(-)运算符 4> 小括号 如果需要先计算优先级低的可以使用小括号()括住,小括号的优先级是最高的! 例如4+5*8-2默认的计算顺序是:*、+、- 如果想先执行加法运算,就可以这样写:(4+5)*8-2,最后的结果都是不一样的\ 5>计算顺序 多个操作符相互混合运算的话,优先级高的操作符与其操作数先结合到了一起,成为一个整体, 但是其并没有计算,计算时要看最外层的运算符是什么,它会按照最外层操作符的结合方向进行计算, 然后是剥洋葱式一层一层的计算 例如表达式2*4+5*8/-2的计算顺序为:首先 - 与 2 结合 ,然后2 * 4 结合, 5 * 8结合 然后是