【从Java转C#】第七章:运算符和类型强制转换

简介: 【从Java转C#】第七章:运算符和类型强制转换

运算符和类型强制转换

运算符

条件运算符

int x = 1;
int y = (x == 1 ? 2 : 3);
Console.WriteLine(y); // y = 2
Console.ReadKey();
  • checked和unchecked:自动检查溢出和忽略溢出
byte x = 255;
checked
   {
        x++;
   }
Console.WriteLine(x.ToString());
Console.ReadLine();
  • is运算符:检查对象是否与特定的类型兼容
  • as运算符:用于执行引用类型的显式类型转换。兼容:转换成功,不兼容:返回null
  • sizeof运算符:可以确定栈中值类型需要的长度
  • typeof运算符:返回一个表示特定类型的 System.Type 对象

类型的安全性

隐式转换:自动的进行转换【从小的到大的】

image-20201104171520216

显式转换:强制的进行转换【从大的到小的】
装箱和拆箱:把值类型转换为引用类型
  • 装箱
int myIntNumber = 20;
object myObject = myIntNumber;
  • 拆箱
int myIntNumber = 20;
object myObject = myIntNumber;
int mySecondNumber = (int)myObject;
  • 警告:在拆箱时,确保得到的值变量有足够的空间存储拆箱的值中的所有字节。
  • 例子:C#的 int 只有 32 位,所以把 long 值(64位)拆箱为 int 时,会导致一个InvalidCastException异常

比较对象的相等性

比较引用类型的相等性

ReferenceEauals()方法
  • ReferenceEauals()方法是一个静态方法。测试两个引用是否引用类的同一个实例,特别是两个引用是否包含内存中的相同地址
Product pro1 = new Product();
Product pro2 = new Product();
bool B1 = ReferenceEquals(null, null); // true
bool B2 = ReferenceEquals(null, pro1); // false
bool B3 = ReferenceEquals(pro2, pro1); // false
Equals()方法
  • 在自己的类重写它,从而按值来比较对象
比较运算符( == )
  • 如果类可以看做值,那就是值比较。反之,则是引用比较。

类之间的强制转换

类之间的类型强制转换

  • 如果某个类派生自另一个类,就不能定义这两个类之间的类型强制转换
  • 类型强制转换必须在元数据类型或目标数据类型的内部定义

基类和派生类之间的类型强制转换

  • 父类可以实例化子类,子类没办法实例化父类
class Program
    {
        static void Main()
        {
            Student st = new XiaoMing(); // 正确 运行的方法为Stduent的方法
            st.eat();
            XiaoMing xi = new Student(); // 错误
        }
    }
    class Student
    {
        public void eat()
        {
            Console.WriteLine("我会吃");
        }
        public void play()
        {
            Console.WriteLine("我会玩");
        }
    }
    class XiaoMing : Student
    {
        public void Name()
        {
            Console.WriteLine("我叫小明");
        }
    }


相关文章
|
15天前
|
安全 Java 编译器
Java类型提升与类型转换详解
本文详解Java中的类型提升与类型转换机制,涵盖类型提升规则、自动类型转换(隐式转换)和强制类型转换(显式转换)的使用场景与注意事项。内容包括类型提升在表达式运算中的作用、自动转换的类型兼容性规则,以及强制转换可能引发的数据丢失和运行时错误。同时提供多个代码示例,帮助理解byte、short、char等类型在运算时的自动提升行为,以及浮点数和整型之间的转换技巧。最后总结了类型转换的最佳实践,如避免不必要的转换、使用显式转换提高可读性、金融计算中使用BigDecimal等,帮助开发者写出更安全、高效的Java代码。
|
15天前
|
Java 测试技术
Java浮点类型详解:使用与区别
Java中的浮点类型主要包括float和double,它们在内存占用、精度范围和使用场景上有显著差异。float占用4字节,提供约6-7位有效数字;double占用8字节,提供约15-16位有效数字。float适合内存敏感或精度要求不高的场景,而double精度更高,是Java默认的浮点类型,推荐在大多数情况下使用。两者都存在精度限制,不能用于需要精确计算的金融领域。比较浮点数时应使用误差范围或BigDecimal类。科学计算和工程计算通常使用double,而金融计算应使用BigDecimal。
206 6
|
6月前
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
87 13
|
12天前
|
安全 IDE Java
Java记录类型(Record):简化数据载体类
Java记录类型(Record):简化数据载体类
90 0
|
6月前
|
存储 传感器 缓存
java变量与数据类型:整型、浮点型与字符类型
### Java数据类型全景表简介 本文详细介绍了Java的基本数据类型和引用数据类型,涵盖每种类型的存储空间、默认值、取值范围及使用场景。特别强调了`byte`、`int`、`long`、`float`、`double`等基本类型在不同应用场景中的选择与优化,如文件流处理、金融计算等。引用数据类型部分则解析了`String`、数组、类对象、接口和枚举的内存分配机制。
166 15
|
5月前
|
Java
java中一个接口A,以及一个实现它的类B,一个A类型的引用对象作为一个方法的参数,这个参数的类型可以是B的类型吗?
本文探讨了面向对象编程中接口与实现类的关系,以及里氏替换原则(LSP)的应用。通过示例代码展示了如何利用多态性将实现类的对象传递给接口类型的参数,满足LSP的要求。LSP确保子类能无缝替换父类或接口,不改变程序行为。接口定义了行为规范,实现类遵循此规范,从而保证了多态性和代码的可维护性。总结来说,接口与实现类的关系天然符合LSP,体现了多态性的核心思想。
109 0
|
6月前
|
Java
课时15:Java运算符(基础数学运算符)
课时15介绍了Java中的基础数学运算符,涵盖加、减、乘、除及自增自减运算。强调了运算符的优先级和使用括号的重要性,并通过范例展示了四则运算与自增自减的具体应用。提醒编写代码时应保持简洁,避免复杂的表达式,确保代码易读性和可维护性。
|
6月前
|
SQL IDE 算法
《从头开始学java,一天一个知识点》之:运算符与表达式:算术、比较和逻辑运算
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问"`a==b`和`equals()`的区别",大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 这个系列为你打造Java「速效救心丸」,每天1分钟,地铁通勤、午休间隙即可完成学习。直击高频考点和实际开发中的「坑位」,拒绝冗长概念,每篇都有可运行的代码示例。明日预告:《控制流程:if-else条件语句实战》。
99 6
|
6月前
|
Java
课时17:Java运算符(关系运算符)
范例:进行关系判断。如果要进行关系运算的操作可使用:>、<、>=、<=、!=(不等于)、==。所有的关系运算符判断完成的数据返回结果都是布尔类型(boolean)。只要使用关系运算符进行逻辑判断,最终的结果就是布尔型,只有true和false两种结果,而且能和if语句结合使用。
|
6月前
|
Java
课时16:Java运算符(三目运算符)
范例:将两个变量值在大的内容赋值给新变量。三目是一种赋值运算,它指的是根据条件来进行判断。(根据判断的结果来决定赋值内容)对于三目运算的基本使用语法如下: 数据类型 变量 = 布尔表达式 ?条件满足时赋值内容:条件不满足时:赋值内容

热门文章

最新文章