本文最后更新于 2020 年 3 月 9 日,文章已超过 6 个月!内容可能已失效,请自行测试 ~

一切皆对象

所有数值类型都有正负号,所以不要去寻找无符号的数值类型。

基本的数据类型

int 类型,4字节
byte 1字节
char 字符类型,2字节
short 2字节
long 8字节
double 8字节
float 4字节
Java字符采用Unicode编码,每个字符占2字节 一个字节占8位
java是跨平台的语言,所以不论在什么系统中这些东西在内存中所占空间都是相同的。

类型转换
java是一种强类型语言,每个数据都与特定的类型有关,但是在运行中,允许整型、浮点型、字符型进行混合运算,运算时,不同类型的数据将会转换为同一类型,再进行转换

转换原则:位数少的类型转换为位数多的类型——自动转换

转换顺序:byte-short-char-int-long-float-double

强转可能会丢失精度

类和对象
面向对象程序设计:Object oriented Programming,OOP

访问权限修饰符
限定访问权限的修饰符有public、private、protected。这些限定修饰符可以修饰类、方法、变量。

存储方式修饰符
static表明数据是静态的,在类被定义之后就已经分配空间,存在。 
可以修饰方法、类、以及变量。

调用静态static变量时需要静态方法

继承相关修饰符
子类拥有父类相关的属性和方法,并可以增加自己的属性和方法

final——用于修饰的类不能再派生子类

abstract ——用abstract修饰的类,表明抽象方法,子类继承需要实现父类的抽象方法。

this和super
this表示是当前类,super表示是父类。继承中经常用到

对象的引用和实例化
类名 变量名;——对象引用格式,系统分配空间,变量名为系统分配的地址空间的引用

变量名=new 类构造器;——对象实例化。

表达式和流程控制语句
变量作用域
清楚变量以及方法的作用域,了解其生命周期。

类中定义的成员变量的作用域是整个类,方法中定义的方法是整个方法的开始到结尾,当然static变量例外

运算符
算数运算符——加减乘除取模等等,++,–。

关系运算符——大于小于子类的

逻辑运算符——或(||)与(&&)非(!)

三目运算符——()?A:B

流控制
if语句

if、else、if else。

switch语句

case: break;default.

循环语句
for循环

for(初试;逻辑表达式;迭代){循环体}

while循环

while(条件){循环体}

do while循环

do{循环体}(while());

break以及continue

break表示结束当前循环、continue表示跳过当前循环,继续下次循环

输入输出
Scanner类——输入
从键盘接受输入

Scanner scanner=new Scanner(System.in);

System.in表示的输入源

常用的基本输入格式

scanner.next();读入下一个输入对象(遇见空格就停止读入)

scanner.nextLine();读入当前行的所有输入

scanner.nextInt();读入下一个Int

数组
创建数组
创建数组有两种方式:第一种是静态初始化、第二种是动态初始化

静态初始化——在定义数组的时候同时对数组元素进行初始化

动态初始化——使用运算符new为数组分配空间,和对象的初始化一样,只不过需要指明数组的具体大小。

type test[]=new type[typeSize]

对使用复合类型的数组,使用运算符只是为数组本身分配空间,并没有对数组元素进行初始化。还需要单个的对数组的每一个元素进行初始化 
需用到两步

数组边界
在java中,数组的下标是从0开始,数组中的元素length是数组类中唯一的数据成员变量,使用new创建数组时系统自动给length赋值

Vector类
与大多数的程序设计语言一样,JAVA中的数组只能保存固定数目的元素,这就要求我们在一开始的时候将数组需要的内存单元一次性申请下来,而不能进行追加。为解决这个问题,JAVA引入了向量类(Vector)

向量是java.util包中提供的一个工具类,它允许不同类型的元素共存一个变长的数组中,因此可以看做是对不同类型元素按照动态数组进行处理。

Vector类的构造方法

public Vector();构造一个空向量
public Vector(int initialCapacity);指定初试储存容量initialCapacity 构造一空向量
public Vector(int initialCapacity,inr capacityIncrement);指定初试的储存容量以及容量增量,构造一个空的向量Vector
Vector的操作

元素的添加

addElement(Object obj);将新元素添加到序列尾部

insertElement(Object obj,int index);将指定元素obj插入到index位置,插入之后的元素都后移一个位置。

元素的删改

setElement(Object obj,int index);将index位置的元素

removeElement(Object obj);删除Vector序列中第一个为obj元素

removeElementAt(Object obj,int index);删除index位置的元素

元素的查找

Object elementAt(int index);返回index位置的Object

Boolean contains(Object obj);检查向量序列中是否包含obj

int indexOf(Object obj,int start_index);从start_index往后找obj,返回其位置,没有找到返回-1.

int lastIndexOf(Object obj,int start_index);从start_index先前搜索,找到返回位置下标,没找到返回-1.

字符串类型
java中提供String和StringBuffer类型,String和StringBuffer都是类,因此java中的字符串是一个真正的对象,不像其他语言那样是一个以/0结尾的字符数组

String用于处理不可变字符(指字符串一旦创建,其内容就不会改变),可以进行查找、比较、连接等操作,不能输入新的字符,也不能改变字符串的长度。StringBuffer用于处理可变字符串,用于需要改变内容并有许多操作的字符串。

String类
String类的对象实例是不可改变的,一旦创建,就确定下来

String常用的方法

length();返回字符串中的字符个数

charAt(int index);返回字符串中index位置的字符

toLowerCase();将当前字符串中的所有字符转换为小写形式

toUpperCase();将字符串中的所有的字符转换为大写形式

subString(int biginIndex);截取当前字符串中从beginIndex开始后到末尾的字串。

replace(char oldChar,char newChar);将当前字符串中出现的所有oldChar转换为newChar

Stringbuffer类
处理可变字符,当修改一个StringBuffer类的字符串,不用创建新的字符,直接不用再创建新的一个字符,而是直接操作原字符串。

对象和类
在JAVA中,允许对多个方法使用同一个方法名,这叫做方法名的重载(前提条件是要能够区分实际调用的是那个方法)(区分方法主要是方法名、参数列表、返回值)

对象的构造和初始化
在java中使用构造函数(constructor)是生成实例的唯一方法

构造函数没有返回值,在创建实例的时候由new运算符自动调用。

extends关键字表示派生
如果一个类有父类,那么父类只能有一个!——单重继承

object类是所有类的直接或间接父类,是类库中的所有类的父类

Object类中常用的属性
public final Class getClass();获取当前类所属的类信息,返回Class类对象

public String toString();按字符串对象返回当前对象本身的有关信息。

public boolean equals(Object obj);比较两个对象时候是同一对象,是则返回true,否则返回false

protected Object clone();生成当前对象的一个副本,并返回这个复制对象。

public int hashCode();返回该对象的哈希码值。

转换对象
java允许使用对象子父类对象的应用指向子类对象

类的对象既可以指向本类对象,也可以指向子类对象,这表现为多态

instanceof 运算符可以判断是否是对象的实例

方法重写Overrided
如果在子类中已经重写了父类的方法,如果还想访问父类中的被隐藏的方法,可以使用super关键字

重载的方法属于一个类,重写的方法属于父子类中

重写的规则

1、重写方法允许访问的方法不能小于原方法(原方法为public,重写的方法不能为private)

2、重写方法抛出的异常不能比原方法多(重写的方法不能有更多的异常)

如果在子类的构造方法的定义中没有明确的调用父类的构造方法,则在系统中执行构造方法的时候会默认的调用父类的默认构造方法

如果在子类的构造方法的定义中调用了父类的构造方法,则调用语句必须出现在子类构造函数的第一行

多态
要由对象确定是调用哪个方法

java包
一个java源代码文件称为一个编译单元。java语言规定,一个编译单元只能有一个public类,且该类名和文件名相同。编译文件中的其他类是该主public的支撑类

包是类的容器,包的设计人员利用包来划分名字空间,用于分割类名空间。避免类名冲突

一个文件只能有一条package文件,且必须在所有申明定义之前。

该文章采用「CC 协议」,转载必须注明作者和本文链接.
分类: Java