zoukankan      html  css  js  c++  java
  • JavaSE基础知识

    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。 但被模数是负数则不可忽略。此外,取模运算的结果不一定总是整数。

    科学搬砖,勤劳致富
  • 相关阅读:
    POJ 3261 Milk Patterns (求可重叠的k次最长重复子串)
    UVaLive 5031 Graph and Queries (Treap)
    Uva 11996 Jewel Magic (Splay)
    HYSBZ
    POJ 3580 SuperMemo (Splay 区间更新、翻转、循环右移,插入,删除,查询)
    HDU 1890 Robotic Sort (Splay 区间翻转)
    【转】ACM中java的使用
    HDU 4267 A Simple Problem with Integers (树状数组)
    POJ 1195 Mobile phones (二维树状数组)
    HDU 4417 Super Mario (树状数组/线段树)
  • 原文地址:https://www.cnblogs.com/tag6254/p/9405250.html
Copyright © 2011-2022 走看看