类型转换

java基础2

流过昼夜 提交于 2020-02-01 21:26:19
------------恢复内容开始------------ ------------恢复内容开始------------ 一,数据类型转换 当数据的类型不一致时,将会发生数据类型转换 (1),自动类型转换(隐式) 特点:代码不需要进行特殊处理,自动完成。 规则:数据范围从小转换到大( byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double ) 代码示例: package cn.itcate.day2demo; public class Demo01DataType { public static void main(String[] args) { System.out.println(1024); //这是一个整数,默认是int类型 System.out.println(3.14);// 浮点数,默认是double类型 long num1 = 100; System.out.println(num1); //100 // 左边是int类型,右边是long类型,左右不一样 // int---->long,符合从小范围到大氛围的要求 // 这一行代码发生了自动类型转换 double num2 = 2.5F; System.out.println(num2);// 2.5 // 左边是double类型,右边是float类型,左右不一样 //

Java核心技术第五章——1.类、超类、子类(2)

末鹿安然 提交于 2020-02-01 17:10:35
继上一篇 Java核心技术第五章——1.类、超类、子类(1) 6.重载解析 假如调用ClassName.Method(args) 1.编译器列出类ClassName所有名为Method的方法。 2.编译器将查看调用方法提供的参数类型(args)。 3.根据参数类型匹配所有名为Method的方法。 4.如果编译器没有找到与参数类型匹配的方法,或者发现经过类型转换后有多个方法与之匹配,就会报告一个错误。 7.阻止继承:final类和方法。 1.final类:当你不希望别人利用某个类定义子类。那么则使用final去修饰类。此类则不允许扩展,称为final类。(final类的方法默认为final方法) 2.final方法:类中的方法也可以被声明为final。如果这样做,那么子类就不能覆盖这个方法(前提不是final类) 8.强制类型转换 例如 : double x = 6.66; int nx = (int) x; //转换成功 此表达式x的值转成整数类型,舍弃了小数部分。 例如: List<Object> obj = new ArrayList(); obj.add("hello"); obj.add(666); int i = (Integer)obj.get(0);//error 类型转换错误 ClassCastException 假如你不清楚obj数组引用的对象

变量

你。 提交于 2020-02-01 13:11:34
变量 变量的分类 定义变量的格式 变量定义的注意点 基本数据类型变量间运算规则 String与8种基本数据类型的运算 变量的分类 按照数据类型分类: 基本数据类型: 整型:byte(1)、short(2)、int(4)、long(8) 浮点型:float(4)、double(8) 字符型:char(2) 布尔型:boolean 整型常量默认类型为:int 浮点型常量默认类型为:double 引用数据类型: 类(class) 接口(interface) 数组(array) 按照声明的位置分类 成员变量 实例变量(不以static修饰) 类遍历(以static修饰) 局部变量 形参(方法、构造器中定义的变量) 方法局部变量(在方法内定义) 代码块局部变量(在代码块内定义) 定义变量的格式 数据类型 变量名 = 变量值 变量定义的注意点 变量必须先声明,后使用 变量都定义在其作用域类。在作用域内,它是有效的。 同一个作用域类不能声明两个同名变量 基本数据类型变量间运算规则 自动类型转换 : 当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型,当byte、short、char三种类型的变量做运算时,结果为int型 强制类型转换 : 需要使用强转符 () 强制类型转换可能导致精度损失 String与8种基本数据类型的运算 String 属于引用数据类型

为什么Java的+ =,-=,* =,/ =复合赋值运算符不需要强制转换?

拥有回忆 提交于 2020-02-01 10:33:43
直到今天,我还以为例如: i += j; 只是以下方面的捷径: i = i + j; 但是,如果我们尝试这样做: int i = 5; long j = 8; 那么 i = i + j; 不会编译,但是 i += j; 会编译的很好。 这是否意味着实际上 i += j; 是这样的快捷方式 i = (type of i) (i + j) 吗? #1楼 在Java中,当可以将赋值操作右侧的表达式类型安全地提升为赋值左侧的变量类型时,将自动执行类型转换。 因此,我们可以安全地分配: byte -> short -> int -> long -> float -> double. 反之亦然。 例如,我们不能自动将long转换为int,因为第一个比第二个需要更多的存储空间,因此信息可能会丢失。 要强制进行这种转换,我们必须进行显式转换。 类型-转换 #2楼 有时,可以在面试中提出这样的问题。 例如,当您编写时: int a = 2; long b = 3; a = a + b; 没有自动类型转换。 在C ++中,编译上面的代码不会有任何错误,但是在Java中,您会得到类似 Incompatible type exception 。 因此,为了避免这种情况,您必须像这样编写代码: int a = 2; long b = 3; a += b;// No compilation error or

day02_数据类型转换、运算符

▼魔方 西西 提交于 2020-02-01 02:16:00
数据类型转换 Java程序中要求参与的计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换。java中数据类型转换分为自动类型转换和强制类型转换。 自动转换 一个 int 类型变量和一个 byte 类型变量进行加法运算, 结果会是什么数据类型? public class Demo { public static void main(String[] args) { int a = 41; byte b = 66; // byte result = a + b; 错误,不能使用byte类型的数据接收结果 int result = a + b; } } 运算结果,变量的类型将是 int 类型,这就是出现了数据类型的自动类型转换现象。byte 类型内存占有1个字节,在和 int 类型运算时会提升为 int 类型 ,自动补充3个字节,因此计算后的结果还是 int 类。同样道理,当一个 int 类型变量和一个 double 变量运算时, int 类型将会自动提升为 double 类型进行运算。 概念 : 将 取值范围小的类型 自动提升为 取值范围大的类型 就是自动类型转换 转换规则 : 范围小的类型向范围大的类型提升, byte、short、char 运算时直接提升为 int 。 byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double

[.net 面向对象编程基础] (4) 基础中的基础——数据类型转换

别等时光非礼了梦想. 提交于 2020-02-01 00:16:10
[.net 面向对象编 程基础 ] (4) 基 础中的基础——数据类型转换 1. 为什么要进行数据转换 ? 首先,为什么要进行数据转换,拿值类型例子说明一下, 比如:我们要把 23 角零钱,换成 2.30 元,就需要把整形转换成小数型。 再比如我们转换一个引用类型的数据,前面说过我们自定义类属于引用类型,假如我们定义了两个类,一个类叫“白猫”,一个类叫“黑猫”,我们要让他们都归为“猫”这个类(不管黑猫白猫,能捉老鼠就是好猫),这种情况就需要将白猫和黑猫这两个类转换成“猫”类。 因此为了运算方便,我们经常要进行不同数据类型间的转换。而且计算机在存储数据的时候,因为数据长度等不同,占用的存储空间要根据预定义好的类型事先分配。在存取之前要进行数据类型的转换。 2.C#类型转换的方式:隐式转换、显式转换、用户自定义转换、使用帮助程序类的转换 隐式转换 :由于该转换是一种安全类型的转换,不会导致数据丢失,因此不需要任何特殊的语法。 例如,从较小整数类型到较大整数类型的转换以及从派生类到基类的转换都是这样的转换。 显式转换(强制转换) :显式转换需要强制转换运算符。 在转换中可能丢失信息时或在出于其他原因转换可能不成功时,必须进行强制转换。典型的例子包括从数值到精度较低或范围较小的类型的转换和从基类实例到派生类的转换。 用户定义的转换:可以定义一些特殊的方法来执行用户定义的转换

C++类型转换:dynamic_cast

删除回忆录丶 提交于 2020-01-31 04:21:43
#include<iostream> #include<string> #include<vector> #include <list> #include <map> #include<iomanip> #include<typeinfo> using namespace std; class A { public: A() :_a(10) {} virtual void func() { cout << "A::func()" << endl; } //如果设置为private后则它不会被子类B继承,所以在下面赋值兼容的时候不能使用这个成员 //private: int _a; }; class B :public A { public: B() :_a(100), _b(88) {} virtual void func() { cout << "B::func()" << endl; } void foo() { cout << "B::foo()" << endl; } int _a; int _b; }; //转换为目标指针 #if 0 /******************************************** 因为C++中类型很重要,如果写成A* a = new A(); 则a是A的指针, 编译器按A的结构来认识他,不可能知道B中的东西, 如果写成A* a

类型转换static_cast和reinterpreter_cast

心已入冬 提交于 2020-01-31 00:17:58
类型转换名称和语法 c风格的强制转换 TYPE b = (TYPE)a; c++风格的类型转换提供了四种类型转换操作符 static_cast 静态类型转换 reinterpreter_cast 重新解释类型 dynamic_cast 动态类型转换,如子类和父类之间的多态类型转换 const_cast 字面上理解就是去const属性 四种类型转换的格式: TYPE B = static_cast(a); 总结 通过static_cast和reinterpreter_cast吧C语言的强制类型转换覆盖了 代码案例 void main ( ) { double a = 32.46546 ; int b = ( int ) a ; //C类型转换 int c = static_cast < int > ( a ) ; //C++静态类型转换 编译的时候编译器会做类型检查 int d = a ; //C语言中,隐式类型转换的地方,均可使用static_cast进行类型转换 //char*==>int* { char * a = "ajdhk" ; int * b = reinterpret_cast < int * > ( a ) ; cout << "a: " << a << endl ; //打印出指针变量所指向的内存空间的 值 cout << "b: " << b << endl ;

基本类型的类型转换

冷暖自知 提交于 2020-01-31 00:00:48
基本类型的类型转换分为自动类型转换和强制类型转换。 自动类型转换 自动类型转换:把某种基本类型的值直接赋给另一种基本类型的变量或者把一个表数范围小的数值变量直接赋给另一种表数范围大的数值变量; eg: public class AutoConversion { public static void main ( String [ ] args ) { int a = 6 ; //int类型可以自动转换为float类型 float f = a ; System . out . println ( f ) ; //输出值为6 byte b = 9 ; //char c = b; byte类型不自动类型转换为char类型 //byte类型自动类型转换为double类型 double d = b ; System . out . println ( d ) ; //输出值为9 //基本类型的值转换为对应的字符串,即将该基本类型的值与一个空字符串连接起来。 String str = 3.5f + "" ; // System . out . println ( 3 + 4 + "hello" ) ; //输出值为7hello //运算hello+3时,会将3当成字符串处理,结果为字符串hello3,再运算hello3+4时,将4当成字符串处理 System . out . println (

通过fastjson将Long类型转换成String类型

限于喜欢 提交于 2020-01-30 04:36:57
后端把Long类型的数据传给前端,前端可能会出现精度丢失的情况。例如: 201511200001725439 这样一个Long类型的整数,传给前端后会变成 201511200001725440 。 解决方法:   方法一:在后台将这个Long类型的字段转换成String类型的,风险比较大。   方法二:使用fastjson的提供的注解, @JSONField(serializeUsing= ToStringSerializer.class) 。 备注:     fastjson在 com.alibaba.fastjson.serializer 包下面提供了多种数据类型转换的注解。   自己也可以拓展这些注解,通过实现 ObjectSerializer 接口来完成。    ToStringSerializer 的代码: public class ToStringSerializer implements ObjectSerializer { public static final ToStringSerializer instance = new ToStringSerializer(); @Override public void write(JSONSerializer serializer, Object object, Object fieldName, Type