首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【 JavaSE 】 数据类型和运算符

float num = 1.0f;    // 写作 1.0F 也可以 System.out.println(num); 注:Java 是类型语言,1.0 默认是 double 型,不加 f 则等号左右类型不匹配...提示 无法为最终变量a分配值 注:常量不能在程序运行过程中发生修改 类型转换 ---- int 和 long/double 相互赋值 隐性类型转换 小范围类型赋值给大范围类型(不会报错...b = a; // 编译通过 注:使用强制类型转化的方式可以 double 类型强制转成 int,但是可能精度缺失 int 和 boolean 相互赋值 示例: int a = 10;...boolean b = true; b = a; // 编译出错, 提示不兼容的类型 a = b; // 编译出错, 提示不兼容的类型 注:int 和 boolean互不相干,互不相干的类型之间无法转...+ b; // 编译出错, 提示 long 转成 int 会丢失精度 long d = a + b; // 编译通过 结论: 当 int 和 long 混合运算的时候 , int 会提升成

42930

《JavaSE-第二章》之基本数据类型类型转换

⚫ Java 程序的所有字符串文字(例如“abc”)都为此类的对象。 特点 ⚫ String其实常被称为不可变字符串类型,它的对象在创建后不能被更改。...强制类型转换如同大瓶子的水倒入到小瓶子里最终瓶子虽然也装满水了,但是会造成溢出部分水(数据的缺失);隐式转换如同小瓶子的水倒入到大瓶子里。...b = a; java是类型语言,会对变量的字面值进行检查,如果字面值大于某一类型存储的最大值的话是无法编译的体现在idea中就是有一条红色的波浪线。...结论: 使用 (类型) 的方式可以 double 类型强制转成 int. 强制类型转换可能会导致精度丢失. 如刚才的例子, 赋值之后, 10.5 就变成 10 了, 小数点后面的部分被忽略....强制类型转换不是一定能成功, 互不相干的类型之间无法转. 6.4类型转换小结 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型 如果需要把范围大的类型赋值给范围小的, 需要强制类型转换

16641
您找到你想要的搜索结果了吗?
是的
没有找到

Java的基础程序设计结构(Java学习-1)

数据类型 Java是一种类型语言,也就是说每一个变量声明都需要一种数据类型,作为一款可移植性,跨平台可用的语言,当然不像C、C++这种换平台,64位OS->32位OS,数据类型空间就发生改变,JVM的好处呗...数据类型划分两种 基本数据类型: 数值型 整型:byte short int long 默认值:0; 浮点型:float double...的数据变量赋值给long long result = maxValue; long result = maxValue +1; //出错 这里涉及到一个自动转换的问题, 等号右边到左边; 二 直接某一...变量 刚说的,Java是一种类型语言,也就是说每一个变量声明都需要一种数据类型 命名规范,大小写敏感,不能用Java关键字。...检查字符串是否相等 ==和.equal 在引用数据类型==比较的是:在内存的地址是否相等。 在基本数据类型==比较的是:值是否相等。

54910

toArray方法总结

这个异常非常有意思,虽然方法返回的数组类型为Brand[],并且其中的每个元素都为Byd,但是Brand[]类型不能转为Byd[]类型。根本原因是JVM的限制,即不能对运行时数组类型进行转。...类型转换向上转型是支持的(转型为父类或接口),向下转型必须进行类型转,可能报运行时异常。...java数组支持协变,即Byd[]是Brand[]的子类,可以用Brand[]类型接收Byd[]对象,如test4所示。...test6也很有意思,虽然List转化为了Brand[],编译通过,但是由于传入的Byd[]为brands1的运行时类型,在往实际的Byd[]存放Brand的过程,会报ArrayStoreException...Double[] list2 = list.toArray(new Double[0]); for (Double d : list2) { System.out.println

29030

泛型编程

泛型的主要目的是加强类型安全和减少强制转换的次数。 Java的泛型编程 在Java中有泛型类和泛型方法之分,这些都是表现形式的改变,实质还是算法尽可能地抽象化,不依赖具体的类型。...assertThat(list.get(0), instanceOf(Integer.TYPE)); assertThat(list.get(0), is(1)); // 不需要强制转换 类型安全 在静态类型语言中...类型赋值检查 long l_num = 1L; int i_num = l_num; // 编译错误 在类型的语言当中,类型不一致是无法互相赋值的。 2....由于Clojure是动态语言,所以只有在运行时才会抛出错误。 另一个简单的例子,如果一个类型不存在某个方法,那就没法去调用它。在动态类型语言中,运行时一定会报错。...Kotlin的Reification的实现使用的是inline模式,就是在编译期间类型进行原地替换。

79720

【C++】初识模板

代码的可维护性比较低,一个出错可能所有的重载均出错。 那能否告诉编译器一个模板,让编译器根据不同的类型利用该模板来生成代码呢?...比如:当用 double 类型使用函数模板时,编译器通过对实参类型的推演, T 确定为 double 类型,然后产生一份专门处理 double 类型的代码,对于字符类型也是如此,即编译器用模板实例化生成对应的...T 推演为 int,通过实参 d T 推演为 double 类型,但模板参数列表只有一个 T, 编译器无法确定此处到底该 T 确定为 int 或者 double 类型而报错。...(a, (int)d) << endl; return 0; } 我们可以在调用 Add 函数时, a 转为 double,或者 d 转为 int 。...注意:如果类型不匹配,编译器会尝试进行隐式类型转换,如果无法转换成功编译器将会报错。 5.

7510

十:Java之泛型

是在调用方法的时候指明泛型的详细类型。 二、使用泛型的目的: 一些类型程序语言支持泛型,其主要目的是加强类型安全及降低类转换的次数,但一些支持泛型的程序语言仅仅能达到部份目的。...这说明了smallest能够是不论什么一个类的对象,我们在以下的代码须要使用compareTo方法, 可是我们没有办法确定我们的T中含有CompareTo方法,所以我们须要对T进行限定,在代码我们让...如在代码定义的ListList类型。在编译之后都会变成List。JVM看到的仅仅是List,而由泛型附加的类型信息对JVM来说是不可见的。...Java编译器会在编译时尽可能的发现可能出错的地方,可是仍然无法避免在执行时刻出现类型转换异常的情况。...也就无法执行与异常相应的catch语句。 二、最佳实践 在使用泛型的时候能够遵循一些主要的原则。从而避免一些常见的问题。 在代码避免泛型类和原始类型的混用。

23220

Modern c++快速浅析

的推导 auto推导具有大括号初始物转换为std::initializer_list或T类型的数据的能力,而模板类型推导不具备这样的能力 C++14 auto a{ 1, 2, 3 };...1 }; // 与C++14相同,皆为std::initializer_list 返回值推导 函数的返回值标记为auto,意味着返回值类型的推导遵循模板类型推导的原则,而非auto的推导原则 C...& x : range) template template template // ......enum class 普通的枚举类型是不限定作用域的,即在同一个namespace,是不能出现重名的,且能够被隐式转换为int等类型的值 ;枚举类型(enum class)的枚举类型是唯一的,但仍可以显示转为...,那么修改的是拷贝而不是值本身)void func(int& num) { } void const_capture() { int data = 20; // 编译出错 无法const int

15410

《Effective Modren C++》 进阶学习(上)

理解auto类型推导 在大部分情况下auto推导与模板类型推导一致,仅当变量使用花括号初始化时,auto能够推导成std::initializer_list,而模板类型推导则无法推导。...要求变窄转换 只有当传入的参数在编译器上无法转换成std::initializer_list的T类型,才会匹配普通的构造函数。...在构造重载匹配,只要参数能够转std::initializer_list的T,就会匹配std::initializer_list构造函数,即便有更加匹配的构造函数。...② 限域枚举的枚举名是类型,未限域枚举的枚举名会隐式转换为整型(现在,也可以转换为浮点类型) 11....如果类存在指针成员变量,则拷贝后的对象和原对象共享相同的内存区域,这可能引发潜在的问题,需要注意。

16820

java基础(二):变量和数据类型

1. java的基本数据类型 java是一种类型语言,每个变量都必须声明其类型。 ? 2.变量 变量:一个数据存储空间的表示。..., 十进制为8 >>> 1 无符号右移1位 二进制为 10 二元运算符类型提升: 整数运算: 如果两个操作数有一个为Long, 则结果也为long 没有long时,结果为int。...字符串连接符 “+”运算符两侧的操作数只要有一个是字符串(String)类型,系统会自动另一个操作数转换为字符串然后再进行连接。 三目条件运算符 语法格式: x ?...优化: 可以整型常量直接赋值给byte, short, char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围 例如: short b = 12; //合法 short b = 1234567...语法: (类型名)表达式 int b = (int)10.2; 小数格式化: import java.text.DecimalFormat double a = 2.3659874; //小数格式化,引号

54520

【C++】模板初阶

T确定为double类型,然后产生一份专门处理double类型的代码,对于字符类型和整形也是如此。...但模板参数列表只有一个T,编译器会无法确定此处到底该T确定为int 或者 double类型而报错。...注意:在模板,编译器一般不会进行类型转换操作,因为一旦转化出问题,编译器就需要背黑锅。 对于上面这种情况一共有三种解决方式:用户对实参进行转、增加模板参数或者显示实例化; a....显式示例化的原理和用户转类似,只不过这里是编译器自动 d1 转为 int 然后传递给形参,或者 a1 转为 double 传递给形参;同时,这里函数的形参也必须用 const 修饰。...,然后实例化的类型放在即可,即类模板必须显示实例化; 这里有一个特别容易出错的地方:类模板名字不是真正的类,而实例化的结果才是真正的类;在之前我们说过,C++类名就是类型,但是类模板和普通的类不同

41000

Kotlin---泛型

Kotlin不变型泛型 Kotlin的不变型泛型和Java一样,通过声明泛型类型来使用泛型类。而该种泛型声明后,则无法使用父类方法与属性。在编译时候,会将泛型擦除。...: 0 } } 协变(Covariant)与逆变(Contravariance) 在Java同样也有这两种类型变换。对于Java而言,也就是: 协变:List<?...在Java,可能会出现这种情况: List strs = new ArrayList(); List objs = strs; // 编译出错!!!...ClassCastException:无法整数转换为字符串 而一般认为,String是Object的子类,而List objs = strs理论上是正确的,但是编译会出错,因为List...extends B>定义了协变,允许从列表获取的对象都可以转换成B的引用,但是不允许往该列表添加对象

93330

带着问题高效学Android:关于Java与Kotlin泛型你应该知道的知识点

首先举两个例子 1.求和函数 实际开发,经常有数值类型求和的需求,例如实现int类型的加法, 有时候还需要实现long类型的求和 如果还需要double类型的求和,又需要重新在重载一个输入是double...在如上的编码过程,我们发现主要存在两个问题: 1.当我们一个对象放入集合,集合不会记住此对象类型,当再次从集合取出此对象时,改对象的编译类型变成了Object类型,但其运行时类型任然为其本身类型...那么解决这个问题的方案就是T限制为实现了接口Comparable的类 public static T min(T a,T b){ if...类型转。...所以不是在get方法里转的,是在你调用的地方转的 kotlin泛型 kotlin泛型引入了in和out Out (协变) 如果你的类是泛型作为内部方法的返回,那么可以用 out: interface

1.1K00

SWIG 官方文档第二部分 - 机翻中文人肉修正

,例如,在 Python ,以下调用带有 std::vector的构造函数: Python>>> c = Container( [1, 2, 3, 4] ) 如果您无法修改被包装的类,请考虑忽略初始化列表构造函数并使用...7.2.13 类型枚举 SWIG 支持类型枚举并解析新的枚举类语法和枚举的前向声明符,例如: C++enum class MyEnum : unsigned int; 类型枚举通常用于避免名称冲突...,因此对待普通枚举和类型枚举是一样的。...// 指针创建类包装器}; 使用此宏时,类型被限制为简单的类型名称,如 int、float 或 Foo。...对于这些的每一个,可以传递一个指针 vector * 或目标语言中的本机列表对象。 • 为 vector 定义了一个输出类型映射。在这种情况下,向量的值被扩展为目标语言的列表对象

2.2K20

Effective Java(第三版)-学习笔记

避免使用finalizer和cleaner 不要使用finalizer和cleaner来做对象的清理工作,因为他们的回收时间无法控制(回收对象是放在队列,同时于具体的引用类型相关)。...没有泛型前,操作集合的元素必须进行转,而类型转换异常只能在运行期才能发现。泛型可以告诉编译器集合每个元素是什么类型的,从而可以在编译期就发现了类型转换的错误。泛型使得程序更加安全,简洁明了。...总之,使用泛型类型的参数可尽量避免运行时的类型转。 优先使用泛型修饰的方法 是指用泛型类型修饰方法的形式参数和返回值,同样可以避免方法类型转。...(double x, double y) { return x-y; } }; //由子类实现 public abstract double apply...(double x,double y); } 3.当由某个特征获取枚举对象时,可返回Optional对象,由客户端判断是否能获取到枚举对象

1.1K10

Java第三次月考50题及解析(2)

,能点出来什么看引用的类型,所以c1点出来的k是B类的变量k,如果想访问A类的k,需要将c1类型转为子类型,然后访问的就是子类的k. 6、【单选题】现有学生表,课程表和成绩表,三表的字段如下:...,通过父类类型引用指向子类对象,若想将该引用类型转换为子类类型,必须转;且转时需要注意,只有转换成的类型是引用指向对象类型,才可转换成功。...,若右表没有匹配的数据,用null进行匹配 39、【单选题】现有如下效果,向Servlet对象HttpSession存入用户的信息,在浏览器关闭之后,再次打开浏览器,为何无法获取到session...A.不可能出现以上现象 B.session对象的有效期设置为了-1 C.session对象的有效期设置为了30min D.session对象的sessionId保存在cookie,而cookie...,虽然集合并没有加泛型约束,但由于传入的是double类型,系统自动将其按照Double类型传入,Double类型不能直接使用转的方式转换为Integer,会抛出类型转换异常. 42、【单选题】指出下列程序运行的结果

1K20

Spring认证中国教育管理中心-Spring Data MongoDB教程四

以下查询方法可让您查找一个或多个文档: findAll:T从集合查询类型对象的列表。 findOne:集合上的即席查询的结果映射到指定类型对象的单个实例。...findById:返回给定 ID 和目标类的对象。 find:集合上的即席查询的结果映射到List指定类型的 a 。...findAndRemove:集合上的即席查询的结果映射到指定类型对象的单个实例。与查询匹配的第一个文档被返回并从数据库的集合删除。...字段名根据域类型属性声明进行映射,同时考虑了潜在的@Field注释。 检索到的值转换为所需的目标类型 - 在本例为String. 如果存储的字段包含文档,还可以值映射到更复杂的类型。...如果类型无法转换为所需的目标类型,则此方法抛出DataAccessException. 11.6.4.地理空间查询 MongoDB的支持通过使用等运营商的地理空间查询$near,$within,geoWithin

2.8K20
领券