Java后端笔记1-基础

一、笔记01
二进制

反码 = 原码各位取反
补码 = 反码 + 1
正数的反码和补码都是其原码

负数的原码,直接把对应正数的最高位改为1
负数的反码,符号位为“1”,数值部分按位取反
负数的补码:负数的反码加1

8位二进制编码的-128没有原码和反码,只有补码

		 -1            		1
 反码:1111 1110        0000 0001
 原码:1000 0001        0000 0001
 补码:1111 1111        0000 0001

例: 37 和 -37

数字37-37
原码0010 01011010 0101
反码0010 01011101 1010
补码0010 01011101 1011

-128 和 128 一样?

数字128-128
原码1000 0000
反码1000 0000
补码1000 00001000 0000

字节(byte)
8 bit(位) = 1byte 或 1B

Java环境搭建及开发
1、JDK(开发工具包) ——》 JRE(运行时环境) ——》 JVM
2、Java虚拟机——JVM:Java程序运行环境
JDK

数据类型
数据类型
Java默认类型中:整型是int,小数是double

public class Demo1_数据类型 {
    public static void main(String[] args) {
        /*
        * 数据类型:
        *   基本数据类型:byte、char、short、int、long、float、double、boolean
        *   引用数据类型:String、Integer.....
        * */
        int maxValue = Integer.MAX_VALUE;
        System.out.println(maxValue);
        /**
         * 2147483647是int类型最大值,加一得到 1000 0...0 0000 :最高位为1表示负数,数值为128,所以结果为-128
         */
        int a = 2147483647;
        System.out.println(a + 1);
        /**
         * 1默认是int
         * byte + 1会自动转int
         */
        byte b = 127;
        System.out.println(b + 1);
    }
}

二、笔记02
IDEA
默认快捷键
修改默认方式位eclipse
修改为eclipse
eclipse快捷键

优化导包ctrl+shift+o
注释代码ctrl+/ 、 ctrl+shift+/
删除一行代码ctrl+D
撤回/前进ctrl+Z/ctrl+Y
查看当前类所有方法ctrl+O
格式代码ctrl+alt+L
查找文件ctrl+H
快速封装方法alt+shift+M
查看类或接口的实现鼠标焦点位于方法名位置,按住ctrl+T即可跳到方法实现位置
生成块语句ctrl+alt+T
去除当前无关包ctrl+shift+O
复制选中(块)语句ctrl+alt+⬇
查找或者替换ctrl+F
多行编辑按住alt+shift,鼠标选择需要编辑的语句
断点调试快捷键F6跳到下一个断点,F8释放断点(调试)

数据转换
自动转换

public class Demo1_自动转换 {
    public static void main(String[] args) {
        /**
         * byte + byte结果是int
         */
        /*
         * 先输入“a + b;”后按alt+enter即可验证两个变量之和结果类型
         * */
        //自动转换:byte、short、char ——》int ——》long ——》float ——》double
        byte b1 = 2;
        short s = 23;
        int a = 120;
        double d = 185;

        int a1 = b1 + s;
        int a2 = s + a;
        double f = a + d;
    }
}

强制转换

public class Demo2_数据强转 {
    public static void main(String[] args) {
        /*
        * 一般是将大的类型往小的类型转换,可能会丢失部分数据
        * 方式:在结果数据前用括号标明数据类型
        * */

        byte b = 127;
        b = (byte)(b + 1);//b+1是int类型
        System.out.println(b);//-128,超出byte最大数值,最高位为1是负数
        //数字相加默认都是int类型
        byte b1 = 2;
        byte b2 = 3;
        byte b3 = (byte)(b2 + b1);
        System.out.println(b3);

        int a1 = 2147483647;
        int a2 = 2;
        int a3 = a1 + a2;//a2=2:a3=-2147483648, a2=1:a3=-2147483647
        System.out.println(a3);

        int d1 = (int) 3.14F;
        System.out.println(d1);
    }
}

算术运算

public class Demo3_算术运算 {
    public static void main(String[] args) {
        /*
        * 取余运算中,运算结果取正运算。
        * 结果符号由前面的数字决定:即%前的数字为正,结果为正,为负结果也为负
        * */
        System.out.println(5 % 3);  //2
        System.out.println(5 % -3); //2
        System.out.println(-5 % 3); //-2
        System.out.println(-5 % -3);//-2
    }
}

逻辑运算

public class Demo4_逻辑运算 {
    public static void main(String[] args) {
        /*
         * 与、或、非、短路与、短路或、异或
         * */
        boolean one = false;
        boolean two = false;
        // 与 & :全部执行
        System.out.println(false & (one = true));
        // 短路与 && :前面是false,后面都不执行
        System.out.println(false && (two = true));

        System.out.println("one is " + one + ", two is " + two);//one is true, two is false
        /*
         * 或 | :全部执行
         * 短路或 || :前面结果为true时,后面不执行
         *
         * */
        System.out.println("///");
        boolean three = false;
        boolean four = false;
        // 或 | :全部执行
        System.out.println(true | (three = true));
        // 短路或 || :前面是true,后面都不执行
        System.out.println(true || (four = true));

        System.out.println("three is " + three + ", four is " + four);//three is true, four is false
        /*
         * 异或 ^ :不同为true,相同为false
         * */
        System.out.println("///");
        System.out.println(true ^ true);  //false
        System.out.println(true ^ false); //true
        System.out.println(false ^ true); //true
        System.out.println(false ^ false);//false
    }
}

三元运算

public class Demo5_三元运算 {
    public static void main(String[] args) {
        /*
         * 三元运算
         *   逻辑表达式 ? 结果一 : 结果二
         *   逻辑表达式为true,得到结果一;为false得到结果二
         * */
        System.out.println(100 > 20 ? "大于" : "不大于");
    }
}

方法

public class Demo6_方法 {

    public static void main(String[] args) {
        max2();
        max3();
    }

    private static void max3() {
        int i = 12;
        int j = 85;
        int k = 45;
        int temp = i > j ? i : j;
        System.out.println(temp > k ? temp : k);
    }

    private static void max2() {
        int i = 56;
        int j = 32;
        System.out.println(i > j ? i : j);
    }

}

扩展

public class Demo7_扩展 {
    public static void main(String[] args) {
        page1();
        page2();
        page3();
    }

    private static void page3() {
        int pageSize = 10;
        int totalCount = 120;
        page(pageSize, totalCount);
    }

    private static void page1() {
        int pageSize = 10;
        int totalCount = 251;
        page(pageSize, totalCount);
    }

    private static void page2() {
        int pageSize = 10;
        int totalCount = 249;
        page(pageSize, totalCount);
    }

    /*
     * 输出分页结果
     * */
    private static void page(int pageSize, int totalCount) {
        int currentPage = currentPage(pageSize, totalCount);
        int currentNumber = currentNumber(pageSize, totalCount);
        System.out.println(totalCount + "是第" + currentPage + "页第" + currentNumber + "条数据");
    }

    /*
     * 获取页数
     * */
    private static int currentPage(int pageSize, int totalCount) {
        return totalCount % pageSize == 0 ? totalCount / pageSize : totalCount / pageSize + 1;
    }

    /*
     * 获取条数
     * */
    private static int currentNumber(int pageSize, int totalCount) {
        return totalCount % pageSize == 0 ? pageSize : totalCount % pageSize;
    }
}

三、笔记03



public class Demo4_扩展 {
    public static void main(String[] args) {
        optimize();
        mulTable();
        tagMethod();
    }


    private static void mulTable() {
        System.out.println("----------------------------------------------------");
        int line = 9;
        for (int i = 1; i <= line; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(i + " x " + j + " = " + (i * j) + "\t");
            }
            System.out.println();
        }
    }


    /*多重循环优化
     *
     * */
    private static void optimize(){
        System.out.println("----------------------------------------------------");
        long start1 = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++) {
            for (int j = 0; j < 1000; j++) {
                for (int k = 0; k < 100; k++) {
                    // TODO something
                }
            }
        }
        long end1 = System.currentTimeMillis();
        System.out.println("外层循环大于内层循环所用时间:" + (end1 - start1));
        //优化
        long start2 = System.currentTimeMillis();
        for (int i = 0; i < 100; i++) {
            for (int j = 0; j < 1000; j++) {
                for (int k = 0; k < 10000; k++) {
                    // TODO something
                }
            }
        }
        long end2 = System.currentTimeMillis();
        System.out.println("外层循环小于内层循环所用时间:" + (end2 - start2));
    }


    /*标记
     * 可以给内外循环一个标记名,break/continue利用标记名来跳出/跳过哪一层循环
     * break/continue默认是内层循环
     * */
    private static void tagMethod() {
        System.out.println("----------------------------------------------------");
        outer:
        for (int i = 0; i < 5; i++) {
            inner:
            for (int j = 0; j < 5; j++) {
                if (i == 2) {
                    break outer;
                } else if (j == 3) {
                    continue;
                }
                System.out.println("inner" + j);
            }
            System.out.println("outer" + i);
        }
    }
}

四、笔记04
方法重载
1、同名方法
2、参数个数不同
3、参数个数相同但类型不同
3、参数个数相同但顺序不同
4、与修饰符无关
在这里插入图片描述

内存
堆:存放对象的实例
栈:存放加载main过程的代码块
方法区:存放.class文件

在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值