java 一些容易忽视的小点-数据类型和运算符篇
注释
- 文档注释: 以“/**”开头以“*/”结尾,注释中包含一些说明性的文字及一些JavaDoc标签(后期写项目时,可以生成项目的API)
- 行注释: 以“/*”开头以“*/”结尾,在“/*”和“*/”之间的内容为注释,我们也可以使用多行注释作为行内注释。但是在使用时要注意,多行注释不能嵌套使用
标识符
- 标识符必须以字母、下划线_、美元符号$开头($符号一般用于系统编译内部类,由系统自动生成,eg:Stack.class Stack$Node.class,意思是Node是Stack的内部类,不推荐coder用于命名)
- Java 标识符大小写敏感,且长度无限制
- Java不采用通常语言使用的ASCII字符集,而是采用Unicode这样标准的国际字符集。因此,这里字母的含义不仅仅是英文,还包括汉字等等
变量和常量命名规范(规范是程序员的基本准则,不规范会直接损害你的个人形象):
包名:com.公司名.项目名.模块名... 全部小写
所有变量、方法、类名:见名知意
类成员变量:首字母小写和驼峰原则: monthSalary
局部变量:首字母小写和驼峰原则
常量:大写字母和下划线:MAX_VALUE
类名:首字母大写和驼峰原则: Man, GoodMan
方法名:首字母小写和驼峰原则: run(), runRun()
数据类型
- 基本数据类型
数值型-
[整型] :byte(1)、 short(2)、int(4)、 long(8)
如果两个操作数有一个为Long, 则结果也为long
没有long时,结果为int。即使操作数全为short,byte,结果也是int
不存在byte,short常量 ,byte b=19; 19是int型,因为太常用,java内部自动会进行显式转换
double d = 2.0e-6*100000000.1;System.out.println(d);结果:200.0000002
[浮点型]:float(4)、 double(8)
不要使用浮点数进行比较,浮点数因为精度问题可能出错,如果要精确计算用BigDecimal
float d1 = 423432423f;
float d2 = d1+1;
d2是等于d1的如果判断两个浮点数是否相等,但不需要精确计算的时候应该使用(f1-f2)< 1e-N 而不是使用(f1==f2),特别是在使用浮点数进行for循环的时候,切记使用(f1-f2)<1e-N
示例代码:double d = 0.001; for (double i = 0; i<d ; i += d/10) {} 这样写是错误的,极有可能出现数学意义上i>d的情况,因为计算机在存取浮点数时是有精度损失的正确的写法应该是类似下面的写法double d = 0.001; for (double i = 0; (d-i)>1e-9 ; i += d/10) {}
float数值要加F/f
double转float的时候采取的是四舍五入原则,double和float转整型时是截尾取整,而若要选用四舍五入则可以使用Math.round(参数)方法
因为精度问题,看起来相等的float值和double值不一定相等
eg: float f=0.4f; double d = 0.4; f > d ; f=0.40000000059604645 d=0.400000000000000000;
- float 的最小值不是Float.MIN_VALUE(代表float能表示的最小精度 1.4E-45),float的最小值是-Float.MAX_VALUE
字符型- char(2)
'a' != "a" 前者是字符,后者是字符串
char ch='';是错的,char里面不能存NULL,ch=' '才是正确的,里面存了个空格
char进行运算时,会转成int进行计算 eg:'2'+'2'=100
char的取值范围非负,所以与其他类型之间没有包含关系无法自动类型转换。char转换为int,long时进行无符号拓展
布尔型-boolean(1位 或 1byte,不同编译器并不一样,官方也没有说明,更广泛的说法是后者 1 byte)
不是C语言,0和1并不代表true/false
java中不允许if(a=b),除非a和b都是Boolean值,这时相当于执行下面语句
boolean a = true; boolean b = false;if(a=b){system.out.printf("false"); }/*if(a=b) 等价于 a=b; if(a);*//*int m = 2;int n = 4;if(m=n)是错误的*/
- 引用数据类型()
- 类
- 接口
- 数组
数组的申明及初始化int[] arr = new int[5];int[] arr = {1,2,3,4};/*不允许分开写,下面是错误的int[] arr;arr={1,2,3,4}*/int[] arr = new int[]{1,2,3,4}; //注意右边不需要指明长度//允许这样写int[] arr; arr = new int[]{1,2,3,4}
2.注意:arr.length是数组长度,不一定是元素长度,数组内部可能是空的,但length还是会计数
注意:基本数据类型变量是不会自行初始化
但引用数据类型会,整型为0,boolean为false,字符型&字符串型为NULL(unicode的0),object为NULL
运算符
- 位运算符
- &(按位与) 和 |(按位或)既是位运算符也是逻辑运算符
- 如果两侧操作数都是boolean类型,就作为逻辑运算符。如果两侧的操作数是整数类型,就是位运算符
- &(按位与) |(按位或)~(按位取反) ^(按位半加,不进位) 异或“相同取0,相异取1”
- 逻辑运算符
- & 和 &&都是与运算符,&&是短路运算符,一假直接跳出
- | 和 ||都是或运算符,通理
- 关系运算符
=是赋值运算符,而真正的判断两个操作数是否相等的运算符是==。
==、!= 是所有(基本和引用)数据类型都可以使用
> 、>=、 <、 <= 仅针对数值类型(byte/short/int/long, float/double。以及char)
扩展赋值运算符
自带强转功能 eg:short s =10; s+=10;是正确的
移位运算符
a>>n(a右移n位),,负数高位补1,正数高位补0,移移位相当于除2
a>>> n : 无符号右移,忽略符号位,高空位都以0补齐
左移和右移都可以与等号组合使用 eg int a =10;a>>=2;意为a右移2位
强制类型转换
- 不能在布尔类型和任何数值类型之间做强制类型转换
- 强制类型转换格式是(int) num, 不是int (num)
变量
- 被final修饰的变量,不可变的是变量的引用,不是数值,map等等的内容都可以改
- static
java 一些容易忽视的小点-数据类型和运算符篇相关推荐
- java基础学习 --- 第二节 变量、数据类型和运算符
java基础学习 - 第二节 变量.数据类型和运算符 一.变量 1.变量就是会发生改变的数据,程序运行时,这些数据以变量的形式被保存到计算机的内存中.如图 2.使用变量的步骤: 声明变量 - ...
- 《Java疯狂讲义》第3章(数据类型和运算符):博主李俊德的阅读笔记与知识拓展
一.问题背景 博主在准备应聘的笔试.面试时,再次采用了多年以来的Java工具书<Java疯狂讲义>,并决定在每章详细复习后都要在博客中写下详细的阅读笔记. 二.阅读笔记与知识拓展--< ...
- JAVA基础——第二章,变量,数据类型和运算符
一,变量声明及使用 申明变量再赋值 int money; //声明变量 monry = 100; //赋值 声明变量并赋值 int money = 100; //声明变量并赋值 二,JAVA常用数据类 ...
- 学习java第三天,今天是数据类型和运算符(2)
1.基本数据类型的类型转换 1.不同的基本数据类型之间进行运算时需要进行类型转换. 2.boolean类型与其他基本类型不能进行类型的转换(既不能进行自动类型的提升,也不能强制类型转换), 否则,将编 ...
- java基础知识讲解(一)数据类型和运算符
Java是一种强类型语言,每个变量都必须声明其数据类型. Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type) ...
- JAVA学习脚印2: 数据类型和运算符
JAVA学习脚印2: 数据类型和运算符 本节将记录java中的数据类型和运算符. 1. java中的数据类型 java中变量的数据类型有两种:基本类型(primitive)和引用(reference) ...
- java异或运算结果数据类型_java中的数据类型和运算符的总结归类。
首先学习java肯定先要了解java的发展史,以及java的特点,常见的dos命令,jdk的安装,如何开发java程序等等一下概念行的东西,这里面我都不一一说了. 今天这一章主要想总结一下java中的 ...
- double类型怎么取余_数据类型和运算符
数据类型和运算符 1.进制 1.1文件存储单位 任何数据在计算机中都是以二进制的形式存在的,二进制早期由电信号开关演变而来 . 一个电信号或者一个二进制位统称为Bit位,8个Bit位为一组组成 ...
- 操作数数据类型 char 对于 sum 运算符无效。_数据类型和运算符
数据类型和运算符 1.进制 1.1文件存储单位 任何数据在计算机中都是以二进制的形式存在的,二进制早期由电信号开关演变而来 . 一个电信号或者一个二进制位统称为Bit位,8个Bit位为一组组成 ...
最新文章
- JStorm与Storm源码分析(六)--收集器 IOutputCollector 、OutputCollector
- phpinfo查看可以解析的后缀_配置nginx,Apache支持pathinfo模式-什么是phpinfo模式
- 除夕之夜快乐!自费送10个无人机给大家
- 扩展银行项目,添加一个(客户类)Customer类。Customer类将包含一个Account对象。...
- 211逆袭浙大-计算机及相关衍生专业保研之路纪实(深度长文,收藏了)
- Android开发一个简单的交互式App
- 怎样写一个lemon的spj
- 理解path.join() 和 path.resolve()
- [深入理解SSD 为SSD编程] SSD的架构和基准
- 快递鸟智选物流API接口平台对接分享实例
- 设计模式分析——迭代器模式(Iterator)
- 系统测试分析系统测试设计
- matlab生成任意区间的随机数
- 实现一下模式识别(三)FLD
- 经典的同步/互斥问题—哲学家进餐
- 思科网络安全 第五章测验答案
- 杜伽键盘k320w断流、固件升级问题与修复
- kaggle往期赛 | 海星目标检测比赛银牌经验分享
- 山西大同大学计算机专业学校,山西大同大学计算机历年考试.doc
- 大数据专业来袭!前京东大学大数据院长亲自为你授课!