零碎知识点汇总

1、枚举类型的检验

运行下列代码,有何结果?

 1 package demo;
 2 public class EnumTest {
 3
 4     public static void main(String[] args) {
 5         Size s=Size.SMALL;
 6         Size t=Size.LARGE;
 7         //s和t引用同一个对象?
 8         System.out.println(s==t);
 9         //是原始数据类型吗?
10         System.out.println(s.getClass().isPrimitive());//getClass()表示获得当前对象的类型。
11         //isPrimitive()确定s.getClass()是否为一个基本类型(但很显然不是,因为是我们自己定义的)
12         //从字符串中转换
13         Size u=Size.valueOf("SMALL");
14         System.out.println(s==u);  //true
15         //列出它的所有值
16         for(Size value:Size.values()){
17             System.out.println(value);
18         }
19     }
20
21 }
22  enum Size{SMALL,MEDIUM,LARGE};

运行结果为:false false true SMALL MEDIUM LARGE。
      结果分析:1)Size s=Size.SMALL;Size t=Size.LARGE;所以很显然,s并不等于t。2)因为s是自己定义的枚举类型,所以不是一个基本类型,所以是false。3)因为u和s引用的是同一个对象,所以相等。4)for循环输出Size内部的值。

2、变量的作用域

Java变量是有作用域的。如果两个作用域完全不同的变量同名,不会引起冲突。就好比一班和二班都有人叫奥巴牛,在一班和二班分开上课的时候,点名就不会有冲突。如果一个班有两个奥巴牛,那就会产生冲突。

但是如果类里面定义一个x,在这个类的函数中也定义一个x,这种情况不会冲突,默认会优先使用函数中的x,这算是有冲突但是用默认谁优先来解决,这算是一种特殊情况。

检验如下:

从实验结果来看,当有同名变量时,会优先使用函数中的变量。

3、Java中的类型转换

实线箭头表示无精度损失,虚线箭头表示有精度损失。

byte占1个字节,取值范围为-128~127;

short占2个字节,取值范围为-32768~32767;

int占4个字节,取值范围为-2147 483 648~2147 483 647;

long占8个字节,取值范围为-9223 372 036 854 775 808~9223 372 036 854 775 807;

char占2个字节,取值范围为-128~127;

float占4个字节,取值范围为3.4E-38~3.4E+38;

double占8个字节,取值范围为1.7E-308~1.7E+308;

由以上知识,可以得知,由整型转换成浮点型时,是会损失精度的。而整型之间的转换不会损失精度。

4、为何doube类型的数值运算得不到“数学上精确”的结果?

有如下程序:

public class TestDouble {

    public static void main(String args[]) {
        System.out.println("0.05 + 0.01 = " + (0.05 + 0.01));
        System.out.println("1.0 - 0.42 = " + (1.0 - 0.42));
        System.out.println("4.015 * 100 = " + (4.015 * 100));
        System.out.println("123.3 / 100 = " + (123.3 / 100));
    }
}

结果截图如下:

为何结果是这样的呢?为何double型的数值运算得不到精确的结果呢?

因为在十进制转换为二进制的时候可能会不准确(如:2.2),这样就导致了误差问题,所以在浮点数表示中,都可能会不可避免的产生些许误差!在单精度转换为双精度的时候,也会存在同样的误差问题。

详细参见:http://www.cnblogs.com/xugang/archive/2010/05/04/1727431.html

5、字符联接操作

The sum is " + sum 使用运算符 + 连接字面量“The sum is” 和计算结果 sum将String 和其它数据类型相加,结果是一个新的String。
      实例程序代码:

 1 public class Try {
 2
 3     public static void main(String[] args) {
 4         int X=100;
 5         int Y=200;
 6         System.out.println("X+Y="+X+Y);
 7         System.out.println(X+Y+"=X+Y");
 8
 9     }
10
11 }

结果截图:

结果分析:

"X+Y="+X+Y 先输出左边的字符串,此处的+X+Y表示和其它数据类型相加,结果是一个新的String。所以直接在后面加上X和Y的值。
 X+Y+"=X+Y"左边因为X和Y都是int型的数据,所以X+Y就是它们的和,即300。
时间: 2024-08-24 10:06:07

零碎知识点汇总的相关文章

赵雅智:js知识点汇总

赵雅智:js知识点汇总,布布扣,bubuko.com

CodeIgniter框架——知识点汇总

NO1.学习要点: 一.CodeIgniter 框架的简介 二.CodeIgniter 框架的安装 三.CodeIgniter 框架的目录结构分析 四.CodeIgniter 框架是如何工作的? 五.CodeIgniter 框架中的控制器.视图.模型及数据库操作 六.CodeIgniter 框架中辅助函数.类库.适配器的学习 七.…… NO2. 一.CodeIgniter 是什么? 1.CodeIgniter 是一个应用程序框架 CodeIgniter 是一个为用 PHP 编写网络应用程序的人员

《正则表达式》知识点汇总摘录

开园一个月了,但一直没有抽出多少时间,就算有时间,也不知道怎么组织语言记(不是写,是记,写是一个创造的过程,像我这等程序猿,猿嘴吐不出象牙!)点东西!翻翻过去手头整理的一些知识点杂记,然后再结合网上的一些,今天对正则表达式在做一个个人的知识汇总摘录吧!程序员都是共产主义者,一点不假!大部分时候我们只是互联网的搬运工,堆砌者(扯远了,当然成为互联网创造者一直使我们的目标!). 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串&quo

软考网络工程师易混淆的知识点汇总

网络工程师考试是全国计算机技术与软件水平考试的一项中级资格考试,通过考试的合格人员能根据应用部门的要求进行网络系统的规划.设计和网络设备的软硬件安装调试工作,能进行网络系统的运行.维护和管理,能高效.可靠.安全地管理网络资源,作为网络专业人员对系统开发进行技术支持和指导,具有工程师的实际工作能力和业务水平,能指导网络管理员从事网络系统的构建和管理工作.网络工程师考试是软考的一大热门,怎样才能顺利通过考试是广大考生都想知道的,下面希赛软考学院为您带来网络工程师备考锦囊之应战篇,专业老师整理的网络工

推荐系统知识点汇总

整理归纳一下<推荐系统实践>和<推荐系统导论>两本书的知识点,文中排版格式可能会有点乱,如有问题请指正.OK,闲话不说,先上2张图 对推荐系统的建模数据进行分析,代表型数据:1)无上下文的隐形反馈数据:2) 无上下文的显性反馈数据:3) 有上下文的隐形反馈数据:4)有小上下文的显性反馈数据,其中显性的反馈数据就是用户对物品的评分,而隐形的就是用户对物品的浏览,时长等数据(不同的领域,用户对物品的行为种类不一样),像我之前的做的都全是用有上下文的隐形反馈,都是通过点击.登陆.时长归纳

python全栈开发 * 10知识点汇总 * 180612

10 函数进阶 知识点汇总 一.动态参数 形参的第三种1.动态接收位置传参 表达:*args (在参数位置编写 * 表?接收任意内容) (1)动态位置参数def eat(*args): print(args)eat("水果","蔬菜","肉",)# # 结果以元祖的形式呈现. : ('水果', '蔬菜', '肉') (2) 位置参数,动态位置参数: 动态参数必须在位置参数后?def eat(a,b,*args): print(a,b,args)e

离散知识点汇总

离散知识点汇总 += %02d #include<string.h> a[i],a[100] += 这表示把左边的数加上/减去右边的数的和/差赋值给左边的数 %02d %d:即为普通的输出. %2d:按宽度为2输出,右对齐方式输出.若不够两位,左边补空格. %02d:同样宽度为2,右对齐方式.位数不够,左边补0 %.2d:从执行效果来看,与%02d一样 #include<string.h> C语言标准库中一个常用的头文件,在使用到字符数组时需要使用.string .h 头文件定义了

【数据库】数据库面试知识点汇总

转自:https://www.cnblogs.com/wenxiaofei/p/9853682.html 数据库面试知识点汇总 一.基本概念 1.主键.外键.超键.候选键 超键:在关系中能唯一标识元组的属性集称为关系模式的超键.一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键.超键包含候选键和主键. 候选键:是最小超键,即没有冗余元素的超键. 主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合.一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Nul

C++知识点汇总文档

C++知识点汇总文档 持续更新 朝花夕拾. 不写下来, 仿佛一切都没了见证. 编程来源于生活, 无非是对现实的抽象. 整理这份文档的时候我才发现, 自己对C++的了解无非是冰山一角 另, C++11真的太恐怖了, 新"特性"真的是"恐怖如斯" 另注: 本人才疏学浅, 难免有错漏之处, 还望不吝赐教 1.基本概念 内存管理 C++中的内存划分(内容来自博客): 堆 由用户使用new delete关键字管理的内存区域 栈 栈中用来存放临时变量, 比如函数中的局部变量,