Java学习笔记(一)

215 阅读3分钟

1.八种基本数据类型

byte  short  int  long  float  double  char  boolean
1字节  2字节  4字节  8字节  4字节  8字节
8bit                   7位有效数字 16位有效数字

2.引用类型

class  interface  String  []

long类型赋值时,后面跟上l。例如:long a = 3l

float类型赋值时,后面跟上f。例如:float b = 1.22f

3.基本数据类型转换 小-->大

注意:当有一系列的+的运算的时候,如果某个部分其中含有字符串,那么这字符串前边挨着的+开始一直往后都是要按字符串去看。

例如:

String str = 1 + 3 + 4 + "hello" + 7 + 8;
System.out.println(str);  // 8hello78

4.“&”和“&&”的区别:

单个&的时候,左边无论真假,右边都参与运算

双&&的时候,如果左边为真,右边参与运算;如果左边为假。右边不参与运算。

5.二进制

负数二进制 = 正数二进制 -> 反码 -> 加1(补码)

反码:1变0,0变1

正数二进制 = 负数二进制 -> 减1 -> 反码

//左移 
System.out.println(1 << 2); //1*2的2次方 
System.out.println(2 << 3); //2*2的3次方
//右移
System.out.println(8 >> 2); // 8*2的-2次方
System.out.println(8 >>> 2);

原始:

 0000 1111 0010 1100  

左移三位:

​0 1111 0010 1100 000

右移四位:

​0000 0000 1111 0010

对于负数来说:

右移和无符号右移的区别是:

1.右移看最高位,最高位是1,则补1;最高位是0,则补0。

2.无符号右移的最高位代表符号,右移后忽略符号,直接补0.

有符号的右移:看右移之后的首位是0还是1,是0前面空位补0,是1就补1;

无符号的右移:移动之后不管首位是0还是1,空位都是直接补0.

&运算:见0是0,全1为1

|运算:见1是1,全0为0

^运算:相同为0,不同为1

反码:0变1,1变0

6.三目运算符

比较三个数中最大的值:嵌套三目

int m = 4;
int n = 8;
int k = 23;
System.out.println(m > n ? (m > k ? m : k) : (n > k ? n : k));

7.运算符优先级:1最高,依次降低

优先级运算符结合性
1()、[]、{}从左向右
2!、+、-、~、++、--从右向左
3*、/、%从左向右
4+、-从左向右
5«、»、>>>从左向右
6<、<=、>、>=、instanceof从左向右
7==、!=从左向右
8&从左向右
9从左向右
10|从左向右
11&&从左向右
12||从左向右
13?:从右向左
14=、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>=从右向左

8.循环结构 for while

break:终止当前所在的循环

continue:对当前所在的循环起作用,结束当前这次循环,当前循环的下面的代码不执行,直接进入下一次循环。

return:结束一个方法

9.数组

一维数组

静态初始化 :在定义数组的时候,对各个元素赋值,完成初始化

int[] array1 = {2, 4, 5, 6};
int[] array2 = new int[] {2, 3, 4, 6};

动态初始化:先定义数组,再对每个元素分别赋值。

int[] array = new int[4];
array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 4;
二维数组

冒泡排序:

int[] arr = new int[]{3, 6, 23, 67, 2, 78, 40};
int tmp = 0;
for (int i = 0; i < arr.length - 1; i++) {
    for (int j = 0; j < arr.length - 1 - i; j++) {
        if (arr[j] > arr[j + 1]) {
            tmp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = tmp;
        }
    }
}

for (int i = 0; i < arr.length ; i++) {
    System.out.println(arr[i]);
}

10.数组常见错误

1.数组下标越界:ArrayIndexOutOfBoundsException

int[] a = new int[3];
System.out.println(a[4]);

ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 3

2.空指针异常:NullPointerException

int[] b = null;
System.out.println(b[0]);