Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 隐式转换与显式转换的区别_Java_C++_Implicit Conversion_Explicit Conversion - Fatal编程技术网

Java 隐式转换与显式转换的区别

Java 隐式转换与显式转换的区别,java,c++,implicit-conversion,explicit-conversion,Java,C++,Implicit Conversion,Explicit Conversion,可能重复: “隐式转换”和“显式转换”有什么区别?爪哇和C++的区别是什么?< / P > < P >你是指铸造吗? 隐式的意思是你传递一个类型的实例,比如说B,它继承了一个类型,比如说a作为a 例如: Class A; Class B extends A; function f(A a) {...}; main() { B b = new B; f(b); // <-- b will be implicitly upcast to A. } 显式转换是指使用一些语法告诉程

可能重复:

“隐式转换”和“显式转换”有什么区别?爪哇和C++的区别是什么?< / P > < P >你是指铸造吗? 隐式的意思是你传递一个类型的实例,比如说B,它继承了一个类型,比如说a作为a

例如:

Class A;
Class B extends A;

function f(A a) {...};

main() {
  B b = new B;
  f(b); // <-- b will be implicitly upcast to A.
}

显式转换是指使用一些语法告诉程序进行转换。例如(在Java中):

隐式转换是在没有任何语法的情况下进行转换的地方。例如(在Java中):

应该注意的是,(在Java中)涉及原语类型的转换通常涉及表示的一些更改,这可能会导致精度损失或信息损失。相反,涉及引用类型(仅)的转换不会更改基本表示形式


<>爪哇与C+++

的差异有什么不同?
我不这么认为。显然,可用的转换是不同的,但是“隐式”和“显式”之间的区别是相同的。(注:我不是C++语言的专家……但是这些词在英语中有一个自然的含义,我不能想象C++规范在矛盾的意义上使用它们。)铸型可能不安全;它们可能在运行时失败或丢失信息。
隐式转换是由编译器执行的类型转换或基本数据转换,以符合数据升级规则或匹配方法的签名。在Java中,只执行安全的隐式转换:上传和升级\


我也建议阅读C++隐式转换:

这只是部分重复。这个问答是关于java和C++的…以及单词隐式和显式vis-a-vis转换的含义。链接的问答只涉及C++中的隐式和显式转换
class A { 
  A (B b) { ... };
}

class B {};

main() {
  B b = new B();
  A a = b; // Implict conversion using the default constructor of A, C++ only.
}
int i = 999999999;
byte b = (byte) i;  // The type cast causes an explicit conversion
b = i;              // Compilation error!!  No implicit conversion here.
int i = 999999999;
float f = i;    // An implicit conversion is performed here