基础部分
万丈高楼平地起, 千里长堤蚁穴溃
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