JAVA后端笔记02-进制-数组-控制语句

1.进制及数值数据的编码
    ▪ 十进制
    – 基数是10,有10个不同的数学符号,即0-9
    ▪ 二进制
    – 基数是2,有2个不同的数学符号,即0和1
    ▪ 八进制
    – 基数是8,有8个不同的数学符号,即0-7
    ▪ 十六进制
    – 基数是16,有16个不同的数学符号,即0-9,A,B,C,D,E,F
    原码

有了数值的表示方法就可以对数进行算数运算,但是很快就发现 用带符号位的原码进行乘除运算时结果正确,

而在加减运算的时 候回出现问题,如下:

 (1)10 - (1)10 = (1)10+(-1)10 = (0)10

(00000001)原+(10000001)原=(10000010)原=(-2)

显然是不正确的
    反码

反码表示规则为:如果是正数,则表示方法和原码一样,如果是 负数,则保留符号位1,

然后将这个数字的原码按照每位取反, 则得到这个数的反码表示形式

– 数字6在计算机中反码就是它的原码:0000 0110

– 数字-6在计算机中反码为:1111 1001

因为在两个正数的加法运算中是没有问题的,于是就发现问题出 现在带符号位的负数身上,

对除符号位外的其余各位逐位取反就 产生了反码,反码的取值空间和原码相同且一一对应,

下面是反 码的减法运算:

1-(1)=1+(-1)=0

 (00000001)反+(11111110)反=(11111111)反=(-0)有问题

1-(2)=1+(-2)=-1

 (00000001)反+(11111101)反=(11111110)反=(-1)正确
    补码

问题出现在(+0)和(-0)上,在人们的计算概念中0是没有正负之分 的 ▪ 于是就引入了补码的概念,

负数的补码就是对反码加一,而正数 不变,正数的原码反码补码都是一样的,在补码中用(-128)代替 了(-0),

所以补码的表示范围为 – (-128~0~127),共256个

补码是计算机表示数据的一般方式,其规则为:如果是正数,则 表示方法和原码一样,如果是负数,

则将数字的反码加上1(相 当于将原码数值按位取反然后在对地位加1)

注意:(-128)没有相对应的原码和反码,(-128)=(10000000)的补 码的加减运算如下:

▪ 1-1=1+(-1)=0

▪ (00000001)补+(11111111)补=(00000000)补=(0) 正确

▪ 1-2=1+(-2)=-1

▪ (00000001)补+(11111110)补=(11111111)补=(-1) 正确

▪ 所以补码的设计目的是:

– 使符号位能与有效值部分一起参加运算,从而简化运算规则

– 使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计

▪ 所有这些转换都是在计算机的最底层进行的,

而在我们使用的汇 编、C等其他高级语言中使用的都是原码


    移码

以后再说
    2.Java流程控制语句
        流程控制语句是用来控制程序中各语句执行顺序的语句,可以把
        语句组合成能完成一定功能的小逻辑模块。
    
        ▪ 顺序结构
        ▪ 选择结构
        – if-else 
        switch
            1.switch语句会根据表达式的值从相匹配的执行,一直执行到break标签处开始ak语句处或者是
            switch语句的末尾。与任一case值不匹配,则进入
            default语句(如果有的话)
            2.只能处理等值条件判断的情况,且表达式必须为
            byte,short,int或char类型 ,不能是String或double,float.1.7之后可以使用string
            3.常量值必须是与表达式类型兼容的特定的一个常量
            4.不允许有重复的case值
            5.default子句为可选
    ▪ 循环结构
        – while 
        – 先判断,后执行。
        do-while 
        先执行,后判断。
        for ▪ 跳转
        – break continue 
        return
            语句从当前方法退出,返回到调用该方法的语句处,幵从该语句的下条语句处继续执行程序。
    ▪ 多重循环
    ▪ 方法
    – 定义、调用、重载
    ▪ 递归算法
    递归的缺点
    – 但是递归调用会占用大量的系统堆栈,内存耗用多,
    – 在递归调用层次多时速度要比循环慢的多
    ▪ 递归的使用场合
    – 任何可用递归解决的问题也能使用迭代解决。
    – 当递归方法可以更加自然地反映问题,幵且易亍理解和调试,幵且丌强调效率
    问题时,可以采用递归;
    – 在要求高性能的情况下尽量避免使用递归,递归既花时间又耗内存。
    
    一维数组

数组是相同类型数据的有序集合.

– 相同类型的若干个数据,按照一定先后次序排列组合而成。

– 其中,每一个数据称作一个数组元素

– 每个数组元素可以通过一个下标来访问它们.

▪ 数组特点:

– 其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。

– 其元素必须是相同类型,不允许出现混合类型。

– 数组中的元素可以是任何数据类型,包括基本类型和引用类型。
        ①数组定义、特点、内存分配
        ②使用一维数组存储数据  数组的应用
        ①查询元素
        ②数组类型做形参
        ③查询最大值最小值
        ④添加元素或删除元素
        ⑤冒泡排序
        ⑥Arrays工具类
        ⑦理解main(String args[])
        ⑧可变参数
        
        一维数组的声明方式有两种:
        type[] arr_name;
        type arr_name[];
        
        
        ▪ 一维数组

 数组是引用类型,它的元素相当于类的实例变量,因此数组一经 分配空间,

其中的每个元素也被按照实例变量同样的方式被隐式 初始化。
        – 数组的特点:长度固定,连续空间,存储同一种类型数据
        – 数组内存分配图
        – for-each循环:简单、主要用于遍历操作
        ▪ 一维数组的应用
        – 数组优缺点
        ▪ 优点:按照索引查询效率高
        ▪ 缺点:添加删除元素效率低;按照内容查询效率低(无序)
        – 冒泡排序:基本的排序算法,理解排序规则,实现并完善排序代码
        – 数组类型做形参
 ▪ 二维数组:
        – 实质是每个元素是一维数组的一维数组;、

发布了13 篇原创文章 · 获赞 1 · 访问量 1498

猜你喜欢

转载自blog.csdn.net/gaoyang426/article/details/103949424
02-