前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java笔记(2)

Java笔记(2)

作者头像
云深无际
发布2020-08-12 15:18:30
5590
发布2020-08-12 15:18:30
举报
文章被收录于专栏:云深之无迹

韶华易逝,红颜易老,缘聚缘散,这个世界有着太多的不如意,每个人都有着很多的无奈,却无法改变。 ——长生界

java是一门强类型得语言,包含两个意思,所有得变量必须先声明,后使用,指定类型得变量只能接受与之相匹配得值。

接下来我们搞一下API文档

简简单单,写个文档~

心态崩了


引用类型包括类、接口和数组类型,还有一种特殊的null类型。所谓引用数据类型就是对一个对象的引用,对象包括实例和数组两种。实际上,引用类型变量就是一个指针,只是Java语言里不再使用指针这个说法。

空类型(null type)就是null值的类型,这种类型没有名称。因为null类型没有名称,所以不可能声明一个null类型的变量或者转换到null类型。空引用(null)是null类型变量唯一的值。空引用(null)可以转换为任何引用类型。

注意:

空引用(null)只能被转换成引用类型,不能转换成基本类型,因此不要把一个null值赋给基本数据类型的变量。

➢ byte:一个byte类型整数在内存里占8位,表数范围是-128(-27)~127(27-1)。

➢ short:一个short类型整数在内存里占16位,表数范围是-32768(-215)~32767(215-1)。

➢ int:一个int类型整数在内存里占32位,表数范围是-2147483648(-231)~2147483647(231-1)。

➢ long:一个long类型整数在内存里占64位,表数范围是(-263)~(263-1)。

int是最常用的整数类型,因此在通常情况下,直接给出一个整数值默认就是int类型。除此之外,有如下两种情形必须指出。

➢ 如果直接将一个较小的整数值(在byte或short类型的表数范围内)赋给一个byte或short变量,系统会自动把这个整数值当成byte或者short类型来处理。➢ 如果使用一个巨大的整数值(超出了int类型的表数范围)时,Java不会自动把这个整数值当成long类型来处理。如果希望系统把一个整数值当成long类型来处理,应在这个整数值后增加l或者L作为后缀。通常推荐使用L,因为英文字母l很容易跟数字1搞混。

注意:

可以把一个较小的整数值(在int类型的表数范围以内)直接赋给一个long类型的变量,这并不是因为Java会把这个较小的整数值当成long类型来处理,Java依然把这个整数值当成int类型来处理,只是因为int类型的值会自动类型转换到long类型。

Java还提供了三个特殊的浮点数值:正无穷大、负无穷大和非数,用于表示溢出和出错。例如,使用一个正数除以0将得到正无穷大,使用一个负数除以0将得到负无穷大,0.0除以0.0或对一个负数开方将得到一个非数。正无穷大通过Double或Float类的POSITIVE_INFINITY表示;负无穷大通过Double或Float类的NEGATIVE_INFINITY表示,非数通过Double或Float类的NaN表示。

必须指出的是,所有的正无穷大数值都是相等的,所有的负无穷大数值都是相等的;而NaN不与任何数值相等,甚至和NaN都不相等。

注意:

只有浮点数除以0才可以得到正无穷大或负无穷大,因为Java语言会自动把和浮点数运算的0(整数)当成0.0(浮点数)处理。如果一个整数值除以0,则会抛出一个异常:ArithmeticException:/by zero(除以0异常)。

布尔型只有一个boolean类型,用于表示逻辑上的“真”或“假”。在Java语言中,boolean类型的数值只能是true或false,不能用0或者非0来代表。其他基本数据类型的值也不能转换成boolean类型。

提示:

Java规范并没有强制指定boolean类型的变量所占用的内存空间。虽然boolean类型的变量或值只要1位即可保存,但由于大部分计算机在分配内存时允许分配的最小内存单元是字节(8位),因此bit大部分时候实际上占用8位。

为了简化局部变量的声明,从Java 10开始支持使用var定义局部变量:var相当于一个动态类型,使用var定义的局部变量的类型由编译器自动推断—定义变量时分配了什么类型的初始值,那该变量就是什么类型。

需要说明的是,Java的var与JavaScript的var截然不同,JavaScript本质上是弱类型语言,因此JavaScript使用var定义的变量并没有明确的类型;但Java是强类型语言,因此Java使用var定义的变量依然有明确的类型—为局部变量指定初始值时,该变量的类型就确定下来了。

因此,使用var定义局部变量时,必须在定义局部变量的同时指定初始值,否则编译器无法推断该变量的类型。

Java引入var属于“向潮流投降”—由于Java本质上是强类型语言,因此使用var定义局部变量只是形式的改变,这些变量依然有明确的类型。

使用var定义局部变量是一把双刃剑,其优点在于:编码更简洁,不管什么类型的局部变量,直接使用var声明即可;其缺点在于:变量类型的可读性降低了。

对于以下几种情况,应该避免使用var定义局部变量。

➢ 变量的类型不容易判断—比如变量的初始值是由复杂的方法调用所得到的。

➢ 局部变量的使用范围很大—随着局部变量的使用范围的增大,后面的代码就更难判断该变量的类型了。

当程序第一次使用某个字符串直接量时,Java会使用常量池(constant pool)来缓存该字符串直接量,如果程序后面的部分需要用到该字符串直接量时,Java会直接使用常量池中的字符串直接量。

常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括关于类、方法、接口中的常量,也包括字符串直接量。

复杂一点得东西,可以用Math库


赋值运算符可与算术运算符、位移运算符结合,扩展成功能更加强大的运算符。扩展后的赋值运算符如下。

➢ +=:对于x+=y,即对应于x=x+y。

➢ -=:对于x-=y,即对应于x=x-y。

➢ *=:对于x*=y,即对应于x=x*y。

➢ /=:对于x/=y,即对应于x=x/y。

➢ %=:对于x%=y,即对应于x=x%y。

➢ &=:对于x&=y,即对应于x=x&y。

➢ |=:对于x|=y,即对应于x=x|y。

➢ ^=:对于x^=y,即对应于x=x^y。

➢ <<=:对于x<<=y,即对应于x=x<<y。

➢ >>=:对于x>>=y,即对应于x=x>>y。

➢ >>>=:对于x>>>=y,即对应于x=x>>>y。

➢ 不要把一个表达式写得过于复杂,如果一个表达式过于复杂,则把它分成几步来完成;

➢ 不要过多地依赖运算符的优先级来控制表达式的执行顺序,这样可读性太差,尽量使用()来控制表达式的执行顺序。

int a=5; int b=4; int c=a++---b*++a/b-->>2%a--;,c的值是多少?

太恐怖了,这种东西。我要是出题人就不出这种题

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档