Java学习回忆录-基础语法-001~009总结

61 篇文章 0 订阅
48 篇文章 1 订阅

Java学习回忆录-基础语法-001~009总结

前面是啥狗屁玩意。我他么自己都不想看,没办法,之前学习的时候做的笔记很乱,一下子整理不过来。哎,形式主义走一波,表示自己曾经经历过…

Windows快捷键

Windows键 + D 快速显示桌面
Windows键 + R 执行运行命令
Windows键 + L 切换用户
Windows键 + E 启动我的电脑

常用的DOS命令

d   :回车      盘符切换
dir :           列出当前目录下的文件及文件夹
md  :           创建目录
rd  :           删除目录
cd  :           改变指定目录(进入指定目录)
cd..:           返回上一级目录
cd\ :           退回到根目录
del(delete):    删除文件,删除一堆后缀名一样的文件
exit:           退出DOS命令行
cls :           清屏
shift 加右键可以在桌面或者文件夹中打开一共功能菜单,这个功能菜单里可以选择打开DOS窗口

2,8,10,16进制

2进制:以0b\0B开头
8进制:以0开头
10进制:整数默认为十进制
16进制:以0x开头

原码,反码,补码

原码:二进制表示,首位为符号位
反码:正数的反码与其原码相同,负数的反码是对其原码进行按位取反,但符号位除外
补码:正数的补码与其原码相同,负数的补码是其反码末位加一
计算器运算的时候都是以补码的形式运算的
float在计算机中的存储方式:
4个字节,一共32个二进制位,IEE 754协议规定:
    1个代表符号位
    8位代表指数位
        在这个8位中00000000 - 11111111
        0 - 255
        0代表0
        255代表无穷大
        剩下的1 - 254需要分成正负,即-126 ~ 127


​ 23位代表的是尾数位

注意:

int x = 4;
int y = (x++)+(++x)+(x*10);     // 注意小括号
    // 先运算小括号,得:
    //    4  +  6  + 6*10
    //    因为x++在小括号里面,所以虽然是x++,但是执行完小括号后,x 已经变成了 5

位运算符:

&   :位与      有0为0,全1为1
|   :位或      有1为1,全0为0
^   : 异或      不同为1,相同为0
~   : 取反      取反操作需要用补码运行

e.g:
    ~6  取反操作需要用到补码
    00000000 00000000 00000000 00000110     6的原码,反码,补码
    11111111 11111111 11111111 11111001     取反(此时为补码,还需要还原成原码,因为为负数,所以需要先减一,然后在求原码)
    11111111 11111111 11111111 11111000     -1
    10000000 00000000 00000000 00000111     原码:-7

^的特点:一个数对另一个数 ^ (异或)两次,该数不变
作用:
1. 可用于两个整数不用第三个变量交换数值
2. e.g 
 ```
 x=10,y=5;
 x=x+y; x=10+5=15
 y=x-y; y=15-5=10
 x=x-y; x=15-10=5
 ```
 ```
 x=10,y=5;
 x=x^y; // 10^5
 y=x^y; // 10^5^5
 x=x^y; // 10^5^10
 ```
  1. 任何字符用 + 和字符串相连接,都会生成新的字符串

位移运算符

1.>> 右移,最高位是0,则补0,最高位是1则补1    
2.<< 左移,左边最高位丢弃,最低位补0    
3.>>> 无符号右移,无论最高位为0或者1,都补0
switch建议判断固定值的时候使用
if建议判断区间或范围的时候使用
如果想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环
当不知道用for循环还是while循环时,用for循环,因为变量及早的从内存中消失,可以提高内存的使用频率
数组相关注意点
int[] arr1 = new int[5];    // 创建一个数组arr1 并开辟空间
int[] arr2 = arr1;          // 创建一个arr2 指向arr1
这里其实只创建了一个数组,arr2指向arr1那个数组

二维数组的定义方法

数据类型[] [] 数组名 = new 数据类型[] [];   (建议使用这种申明方式)
数据类型[] 数组名 [] = new 数据类型[] [];
数据类型 数组名[] [] = new 数据类型[] [];

引用数据类型的默认初始化值都是null

二维数组越界问题

int[] [] arr = {{1,2,3},{4,5},{6,7,8}};
当定义上述二维数组时,arr其实就被定义成3个以为数组,
arr[0]为一个三维数组,**arr[1]为一个二维数组**,arr[2]为一个三维数组,
切记,arr[1]这个数组没有3个元素,只有两个,所以调用arr[1][2]时会出现数组下标越界的情况
对象相关注意点
Car c1 = new Car();         // 创建一个Car对象c1 并开辟堆空间
Car c2 = c1;                // 创建一个Car对象c2,但是这个c2对象是指向c1开辟的堆空间的,它自己并没有开辟空间
这里其实只创建了一个对象空间,只是该空间有两个对象名,通过其中一个对象名修改参数的时候,另一个对象名调用时是调用修改后的参数。

成员变量和局部变量的区别:

1. 在类中的位置不同
    * 成员变量:在类中方法外
    * 局部变量:在方法定义中或者方法申明上
2. 在内存中的位置不同
    * 成员变量:在堆内存(成员变量属于对象,对象进堆内存)
    * 局部变量:在栈内存(局部变量属于方法,方法进栈内存)
3. 生命周期不同 
    * 成员变量:随着对象的创建而存在,随着对象的消失而消失
    * 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
4. 初始化值不同 
    * 成员变量:有默认初始化值
    * 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用

注意事项:
    * 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则
    * 基本数据类型变量包括:byte、short、char、int、long、float、double、boolean
    * 引用数据类型变量包括:数组、类、接口、枚举

两个方法中的局部变量是不能互相访问的
当一个方法的形式参数是类名的时候,其实需要的是该类的对象

匿名对象

没有名字的对象就叫匿名对象
e.g: 
// 正常对象调用
    Car c1 = new Car();
    c1.run();
// 匿名对象调用
    new car().run();
匿名对象应用场景:
    * 调用方法,仅仅只调用一次的时候
        好处:节省代码
        注意:不适合调用多次,匿名对象调用完毕就是垃圾,可以被垃圾回收器回收
    * 匿名对象可以作为实际参数传递
    * 匿名对象可以调用属性,但是没有意义,因为调用完后就变成了垃圾

private关键字

1. 是一个权限修饰符
2. 可以修饰成员变量和成员方法
3. 被其修饰的成员只能在本类中被访问
注意:private仅仅是封装的一种体现形式,不能说封装就是私有

this关键字

代表当前对象的引用
作用:可以用来区分成员变量和局部变量重名

构造方法注意事项

1. 如果自己没有给出构造方法,系统将自动提供一个无参构造方法
2. 如果自己给出了构造方法,系统将不再提供默认的无参构造方法
    注意:这个时候如果还想使用无参构造方法,就必须自己给出,建议每次都自己给出无参构造方法

static关键字

1. 随着类的加载而加载
2. 优先于对象存在
3. 被该类的所有对象共享
4. 可以通过类名调用
注意事项:
    1. 在静态方法中是没有this关键字的
        * 静态是随着类的加载而加载,this是随着对象的创建而存在
        * 静态比对象先存在
    2. 静态方法只能访问静态的成员变量和静态的成员方法
        * 静态方法:
            成员变量:只能访问静态变量
            成员方法:只能访问静态成员方法
        * 非静态方法:
            成员变量:可以是静态的,也可以是非静态的
            成员方法:可以是静态的成员方法,也可以是非静态的成员方法
        简单理解:静态只能访问静态
        e.g:
class Demo(){                       // 定义一个演示类
    int num1 = 10;                  // 定义一个成员变量 num1
    static int num2 = 20;           // 定义一个静态成员变量 num2
    
    public void show1(){            // 定义一个非静态的方法,这个方法只有创建对象后使用对象名才可以调用 -- 对象名.show1();
        System.out.println(num1);   // 当使用对象名调用时,num1就是该对象的成员变量,正常输出   
        System.out.println(num2);   // num2,为静态成员变量,在加载这个类的时候就已经存在,所以可以正常输出
    }
    
    public static void show2(){     // 定义一个静态的方法,这个方法即使没有创建对象也可以调用 -- 使用方法:类名.show2();
        System.out.println(num1);   // 因为该方法可以使用类名.show2()的形式调用,可以不用创建对象,所以num1在没有创建对象的时候是不存在的,所以这里会出错
        System.out.println(num2);   // num2,为静态成员变量,在加载这个类的时候就已经存在,所以可以正常输出
    }
}

静态变量和成员变量的区别

静态变量也叫类变量  成员变量也叫对象变量
1. 所属不同
    静态变量属于类,所以也成为类变量
    成员变量属于对象,所以也成为实例变量(对象变量)
2. 内存中位置不同
    静态变量存储于方法区的静态区
    成员变量存储于堆内存
3. 内存出现时间不同
    静态变量随着类的加载而加载,随着类的消失而消失
    成员变量随着对象的创建而存在,随着对象的消失而消失
4. 调用不同
    静态变量可以通过类名调用,也可以通过对象调用
    成员变量只能通过对象名调用

工具类使用静态

如果一个类中所有的方法都是静态的,那么需要把这个类的构造方法也私有,目的是不让其他类创建本类对象,
类中的方法直接通过 类名.方法名() 调用

构造方法私有即是在构造方法前加private

代码块

概述:在java中使用 {} 括起来的代码被称为代码块
分类:根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块(多线程讲解)
应用:局部代码块:
        在方法中出现,限定变量的生命周期,及早释放,提高内存利用率
    构造代码块(初始化块)
        在类中方法外出现,多个构造方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行
    静态代码块
        在类中方法外出现,加了static修饰
        在类中方法外出现,并加上static修饰,用于给类进行初始化,在加载的时候就执行,并且只执行一次
        一般用于加载驱动
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值