zoukankan      html  css  js  c++  java
  • Java学习 第三章 java基础(一)

     

    一、 计算机进制转换:二进制、八进制、十进制、十六进制互转

    计算机系统数制概述

        • 数制是一组固定的符号和统一的规划来表示数值的方法;
        • 计算机底层使用的数制是二进制;
        • 用Java编程实用的是十进制。Java底层仍使用二进制;
        • 计算机常用的数制还有八进制和十六进制;

    十进制的基本数字0~9,逢十进位。

    10称做“基数”,10^n(10的n次幂)被称作“权”。

    二进制的基本数字是0、1,逢2进位。

    二进制的基数为2,权为2^n(2的n次方)。

    十六进制基本数字:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,逢十六进位

    十六进制是二进制的简写,方便专业人员书写二进制数据。

    16进制的基数是16,权为16^n(16的n次方)

    在Java代码中十六进制用0X或0x做前缀(0是数字,不是字母)。

    示例:5E十六进制=5*16^1+14*16^0 = 80+14 =94;

    二进制转换成十六进制 规则: 四位二进制数相当于一位十六进制数。

    十进制数转换二进制:规则:不断除以2,保留余数,商为0时不再除2.

    十进制数转换十六进制:规则: 不断除以16,保留余数,商为0时不再除16.

    二、变量与数据类型

    1、概述

    Java 定义了基本数据类型、引用数据类型和自定义数据类型;

    2、栈空

        • 栈空间存取数据的效率高;
        • 栈中的数据按“先进后出”的方式管理;
        • 栈空间存储空间较小,不能存放大量的数据;
        • JMV将基础数据类型的数据存放在栈空间;

    3、堆空间

        • 堆空间存取数据的效率最低;
        • 数据存放的位置随机分配;
        • 堆空间存储数据的空间大,能存放大容量的数据;

     

    三、变量的定义和变量使用的原因

    变量:可变的量;

    常量:不可变的量;

    字面量:Java的变量和常量中存放的具体数据成为字面量;

    计算机的高级语言普遍使用变量来管理内存中存储的数据。

    变量管理引用类型的数据:

    四、变量的命名、定义和初始化

    1、变量的命名

        • 首字母是英文字母、$或下划线,由字母、数字、下划线组成;
        • 变量的命名遵循见名知义的原则。
        • Java变量名建议不用中文。
        • 变量名首字母不用大写字母。
        • 用驼峰命名法命名多个单词组成的变量名。eg:sumScore
        • 变量名不要使用Java关键字。

    2、变量的定义

    定义变量:每个变量必需属于一种类型。

    类型  变量名1,变量2,…,变量n;

    e.g: byte score; //保存单科分数

    short age; //保存年龄

    int sumScore; //保存总分

    3、变量的初始化

    赋值 = 

    e.g:  age = 18;

    score = 60;

    sumScore = 600;

    五、变量的作用域

    1、java用一对大括号作为语句块的范围,称为作用域。

    2、作用域中的变量不能重复定义。

    3、离开作用域,变量所分配的内存空间将为JVM回收。

    六、基础数据类型的包装类

    Java为基础数据类型提供了对应的类,这些类称作包装类,如下图

    1、包装类中封装了一些很实用的方法和常量。例如:Byte.MIN_VALUE是Byte类中的一个常量,存放了byte类型数据的最小值。

    2、包装类在集合中用来自定义集合元素的类型。

    3、使用包装类

    Integer.MIN_VALUE: int类型的最小值:-2^31

    Integer.MAX_VALUE: int类型的最大值:2^31-1

    int Integer.parseInt(String sInteger);

    作用:将字符串类型的整数转换为int类型的数据。

    String Integer.toBinaryString(int value);

    作用:将十进制数转化为二进制,返回结果String类型。

    String Integer.toHexString(int value);

    作用:将十进制数转换为十六进制,返回结果String类型。

    七、二进制补码

    1、概述

    计算机系统的内部一二进制形式存储数据。

    在Java程序中输入的十进制的数据都会被自动转换为二进制,Java内部也以二进制来进行数值运算,但返回的结果是是进制。

    2、补码规则

        • 在计算机系统中,数值一律用二进制的补码来储存。
        • 二进制的最高位是符号位,0表示正数,1表示负数。
        • 正数的值是其本身,负数的值是最高位(符号位)不变,其它位逐位取反,再加1.  
        • 两数相加,若最高位(符号位)有进位,则进位被舍弃。

    3、为什么使用补码

        • 可以将符号位和其他位统一处理。
        • 最高位不再表示数值,而是作为符号位,正好将数值折半,即一半是0至正数,一半是负数。eg :4位 二进制数共有16个数,用补码表示,则一半是0~7,一半是-1~-8. 8位 二进制数共有256个数,用补码表示,则一半是0~127,一半是-1~-128.
        • 减法也可按加法来处理。

    4、补码运算的特征

        • 计算机中正数和负数的关系是取反加一。
        • 补码运算是封闭的:运算结果保留在补码范围之内,超范围就溢出。
        • 4位二进制补码最多能表示2^4(16)个数,数的范围是-8~7.
        • 8位二进制补码最多能表示2^8(256)个数,数的范围是-128~127.
        • 16位二进制补码最多能表示2^16(65536)个数,数的范围是-32768~32767.
        • 32位二进制补码最多能表示2^32个数,数的范围是-2^31~2^31-1.

    5、补码运算的原理

    正数+负数 = 模

    模:某种类型数据的总数,例如:

    4位二进制的模是2^4=16

    因此,负数=模-正数,这就是逐位取反加1的原因。

    八、整数、浮点、字符类型

    1、整数类型

        • Java有四种整数类型:byte、short、int、long。
        • Java默认整数计算的结果是int类型。
        • 整数的字面量是int类型。
        • 若字面量超过int类型的最大值,则字面量是long类型,那么后面要用L(或l)表示该值是long类型。eg: long longValue = 300000000L  

    2、浮点类型

        • 浮点类型用于表示小数的数据类型。
        • 浮点数原理:也就是二进制科学计数法。
        • Java的浮点类型有float和double两种。
        • Java默认浮点类型计算的结果是double类型,字面量也是double类型。若要给float类型的变量赋字面量的值,则要在字面量后面加F(或f)。eg : float f=5.3;将会出现编译错误,正确的赋值是:float f=5.3f;

    浮点数科学计算法:

        • 十进制浮点数科学计数法:219345=2.19345*(10^5)
        • 二进制浮点数科学计数法:10111=1.0111*(2^100)

    float类型:

        • float类型共32位,1位为符号位,指数8位,为数32位。
        • float的精度是23位(即能精确表示23位的数,超过就被截取了)。小数是以尾数长度来表示精确度的,比如pi=3.1415的精度是4位。
        • float存储数据的范围大于int类型,但精度比int要小,因为int的精度是31位。

    double类型

        • double类型,1位符号位,11位指数,52位尾数。
        • double范围远远大于long,但double精度不如long(long存储数据的位数是63位)。

    浮点运算的特点:

    浮点运算就是实数运算,由于计算机智能存储整数,所以实数都是约数,这样浮点运算是很慢的而且会有误差。

    3、字符类型

        • char类型的字面量可以是一个英文字母、字符或者一个汉字,并且由单引号包括。eg:’A’.
        • Java底层使用一个16位的整数来处理字符类型,该数值是一个字符的unicode编码值。

    unicode编码:

        • unicode编码是全球范围内的编码方法。
        • unicode编码的英文部分与ASCII码兼容(ASCII表示范围0~128),同时英文字符和数字是连续编码的。
        • Java在处理char类型的数据时,在底层是按unicode码来处理的。

    编码:

    计算机硬件系统智能用0和1表示数,我们人为地做了规定,某个数还可以表示一个字符。eg:65表示A。

     

     

    参考:极客学院课程 http://ke.jikexueyuan.com/zhiye/javaweb/

  • 相关阅读:
    HDOJ 1207 汉诺塔II
    [转]写代码的小女孩
    POJ Subway tree systems
    HDOJ 3555 Bomb (数位DP)
    POJ 1636 Prison rearrangement (DP)
    POJ 1015 Jury Compromise (DP)
    UVA 10003
    UVA 103 Stacking Boxes
    HDOJ 3530 Subsequence
    第三百六十二、三天 how can I 坚持
  • 原文地址:https://www.cnblogs.com/lulushen/p/7891739.html
Copyright © 2011-2022 走看看