Java基础知识

一、基础知识

1.java命名规则

  • 由26个英文字母大小写,0-9 ,_或 $ 组成
  • 数字不可以开头。
  • 不可以使用关键字和保留字,但能包含关键字和保留字。
  • Java中严格区分大小写,长度无限制。
  • 标识符不能包含空格。

2.常量与变量

  • 常量:一个数字就表示常量、常量内容是不会改变的。常量可以描述为内容不可变的规定内容标识,在java中也可意思static final修饰的静态内容指向不可变的常量空间。
  • 变量:将内存中的某个内存块保留下来以供程序使用,里面的内容是可变的。一片内存区域,其内容指向可以改变即可定义为变量。

①变量的分类(按照类型划分)

  对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间。

②两者都有生命周期,但局部变量除形参外,需显式初始化。

二、基本数据类型

  Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。8 中类型表示范围如下:

  • byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。
  • short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。
  • int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。

  ▶int类型只保留整数位不保留小数位,总共32位,第1位为符号位,则数据位有31位,2的31次方等于214748365E9,则int的范围在负的2的31次方到正的2的31次方减1之间(为什么要减一?因为有0存在)。

  • long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
  • float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。

  ▶float在内存中的存储遵循IEEE 754标准。在C/C++中,float类型占4个字节即32位 ,这32位分成了3部分:

  1. 符号位:转化成二进制后,第31位。 0代表正数,1代表负数
  2. 阶码:30-23位,转化成规格化的二进制之后与127之和
  3. 尾数:22-0位

  ▶float的有效位为7位,小数位在计算机中可以显示7位,但只有前6位是准确的,整数加小数最多显示8位,其中从整数部分开始算起,这样一来,当整数位较长时会影响小数位的精度。float和double在内存中的格式为:

  上面的存储结构,由于字节太多,所以后面使用的十六进制表示,7代表3位,f代表4位

  ▶从存储结构和算法上来讲,double和float是一样的,不一样的地方仅仅是float是32位的,double是64位的,所以double能存储更高的精度以及更大的数值。

  1. float的正数范围:3.40282346638528859811704183484516925440e+38~1.401298464324817070923729583289916131280e-45
  2. double的正数范围:1.797693134862315708145274237317043567981e+308~4.940656458412465441765687928682213723651e-324

  可以看出来double的表示的范围比float大,而且由于尾数增加,实际上,精确度也比float高,但这样的优势带来的就是更低的计算效率,虽然个人觉得不论是float还是double计算效率都被整形完爆,所以能够用整型操作,就尽量不要用浮点型。

  另外一个主要注意的则是,我们可以看到这里该数的表示范围并不像整形那样,直接可以表示0,而是是一个很大到一个很接近0的数值,所以很多情况下浮点数判断是否为0,不是直接跟0比较是不是相等,而是约定一个很小的数,如果小于这个数,就等于0

  • double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。

  ▶double的有效位为16位,小数位在计算机中可以显示16位,但只有前15位是准确的,整数加小数最多显示17位,其中从整数部分开始算起,这样一来,当整数位较长时会影响小数位的精度

  • boolean:只有true和false两个取值。
  • char:16位,存储Unicode码,用单引号赋值。

1.数据类型之间的转换

  数据类型的转换方式可分为“自动类型转换”及“强制类型转换”两种。

  • 自动类型转换:容量小的类型自动转换为容量大的数据类型。数据类型按容量大小排序为:

  1. byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。
  2. 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
  3. 当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转化为字符串类型。
  • 强制类型转换:自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符‘()’,但可能造成精度降低或溢出,格外要注意。
  1. 通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型。如: String a = “43”; int i = Integer.parseInt(a);
  2. boolean类型不可以转换为其它的数据类型。

三、运算符与表达式

  计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:算术运算符、关系运算符、位运算符、逻辑运算符、赋值运算符、其他运算符

1.算术运算符

  算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符:

2.关系运算符

3.位运算符

  Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。 位运算符作用在所有的位上,并且按位运算。

4.逻辑运算符

5.赋值运算符

  • 注意事项:

  如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。 但被模数是负数则不可忽略。此外,取模运算的结果不一定总是整数。

最新文章

  1. AutoCAD .net 开发 SelectionFilter Foreach Linq 性能比较
  2. org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
  3. jquer 基础篇 dom操作
  4. php://input
  5. php 遍历目录下的所以文件和文件夹
  6. PRML读书笔记——2 Probability Distributions
  7. 关于 System.IO.FileAttributes 的 Reparse Points
  8. hdu2444
  9. [转] Python正则表达式指南
  10. 构建自己的PHP框架--构建模版引擎(2)
  11. 【特效】hover效果之四线动画
  12. SQL server学习(二)表结构操作、SQL函数、高级查询
  13. 《SQL CookBook 》笔记-第三章-多表查询
  14. c++ std::advance
  15. 数据库 -- mysql表操作
  16. leetcode322
  17. 性能测试之mysql监控、优化
  18. Quartz2D指定显示范围
  19. pytest集成Allure Report
  20. 获取表单提交MVC错误信息

热门文章

  1. sublime text 3设置
  2. Vue页面刷新方法(子组件改变数据后兄弟组件刷新,不闪烁)
  3. 前端学习之一_html学习
  4. 网页中JS函数自动执行常用三种方法
  5. JS基础_Null和Undefind
  6. 选题 Scrum立会报告+燃尽图 05
  7. LeetCode 168. Excel表列名称(Excel Sheet Column Title)
  8. 【Spark机器学习速成宝典】模型篇06随机森林【Random Forests】(Python版)
  9. 一次性生产KEY
  10. PHP基本语句