基础部分

万丈高楼平地起, 千里长堤蚁穴溃

1.1、类和对象

类:类指抽象的一个模版、蓝图,比如现实生活中我们的人类,鸟类; 对象:是类的一个实例,指具体的一个,举个栗子:叫张三的人是人类的具体的一个人,他就属于人类的一个实例。用代码来演示下:

//人类
public class Person{
    private String name;//姓名
    public Person(String name){
        this.name = name;
    }
    //省略get set
}

//测试
public class Test{
    public static void main(String[] args){
        Person zhang = new Person("张三");
        //这里Person就是指类,zhang则是Person类的一个实例
        System.out.println("zhang的名字是:"+zhang.getName());
    }
}

1.2、数据类型

1.2.1、内置数据类型

八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

类型

介绍

范围

byte

byte 数据类型是8位、有符号的,以二进制补码表示的整数;byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;

-128(-2^7)~ 127(2^7-1)

short

short 数据类型是 16 位、有符号的以二进制补码表示的整数;Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;

-32768(-2^15)~ 32767(2^15 - 1)

int

int 数据类型是32位、有符号的以二进制补码表示的整数;一般地整型变量默认为 int 类型;

-2,147,483,648(-2^31)~ 2,147,483,647(2^31 - 1)

long

long 数据类型是 64 位、有符号的以二进制补码表示的整数;这种类型主要使用在需要比较大整数的系统上;

-9,223,372,036,854,775,808(-2^63)~9,223,372,036,854,775,807(2^63 -1)

float

float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;float 在储存大型浮点数组的时候可节省内存空间;浮点数不能用来表示精确的值,如货币;

double

double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数;浮点数的默认类型为double类型;double类型同样不能表示精确的值,如货币;

char

char类型是一个单一的 16 位 Unicode 字符;char 数据类型可以储存任何字符;

最小值是 \u0000(即为0);最大值是 \uffff(即为65,535);

boolean

boolean数据类型表示一位的信息;只有两个取值:true 和 false;

true/false

PS: 一个字节等于8位。1byte=8bit

1.2.2、引用类型

在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。

对象、数组都是引用数据类型。

所有引用类型的默认值都是null。

一个引用变量可以用来引用任何与之兼容的类型。

1.3、常量/变量

1.3.1、常量

常量在程序运行时是不能被修改的。在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似:

final int MAX_SIZE = 100;

1.3.2、变量

变量类型有:

类变量:独立于方法之外的变量,用 static 修饰。

实例变量:独立于方法之外的变量,不过没有 static 修饰。

局部变量:类的方法中的变量。(没有默认值,必须初始化否则编译报错)

//变量举例
public class Test{ 
  static int size=0; // 类变量 
  String str="hello world"; // 实例变量 
  public void method(){ 
   int i =0; // 局部变量 
   } 
 }

1.4、修饰符

1.4.1、访问控制修饰符

修饰符

当前类

同包

子孙类

其他包

public

Y

Y

Y

Y

protected

Y

Y

Y

N

default

Y

Y

N

N

private

Y

N

N

N

1.4.2、非访问控制修饰符

为了实现一些其他的功能,Java 也提供了许多非访问修饰符。

static 修饰符,用来修饰类方法和类变量。

final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。

abstract 修饰符,用来创建抽象类和抽象方法。

synchronized 和 volatile 修饰符,主要用于线程的编程。

1.5、运算符

1.5.1、算术运算符

操作符

描述

+

加运算

-

减运算

*

乘运算

/

除运算

%

求膜运算(余)

++

自加

--

自减

1.5.2、关系运算符

操作符

描述

==

等于

!=

不等于

>

大于

<

小于

>=

大于等于

<=

小于等于

1.5.3、位运算符

操作符

描述

&

同1为1,否则为0

|

同0为0,否则为1

^

值同为1,否则为0

~

求反,0变1,1变0

<<

按位左移

>>

按位右移

>>>

1.6、原码、反码、补码简介

计算机如何进行运算?先得知道原码、反码、补码。

正数的原码反码补码都是一样,负数的反码等于原码除符号位取反,补码等于反码末位+1(定义并不是这样的,只是运算时候确实是这样的巧合)。至于为什么这样,详细还是需要去了解计算机原理。下面来模拟下计算机加减运算。

1+2=3

数字

1

2

二进制

0001

0010

反码

0001

0010

补码

0001

0010

0001+0010=0011 正数的原码补码反码一样所以 十进制就是3

3-2=1

数字

3

-2

二进制

0011

1010

反码

0011

1101

补码

0011

1110

0011+1110=0001 正数的原码补码反码一样所以 十进制就是1

2-5=-3

数字

2

-5

二进制

0010

1101

反码

0010

1010

补码

0010

1011

0010+1011=1101 此处为负,补码求原码,末位减一除符号位取反

末位减1 等于 1100

除符号位取反等于1011

十进制就是-3

1.7、 分支与循环

Last updated