1、Java的整型常量默认为int型,并且在声明long类型常量后要加上“L\l”。
2、Java的浮点类型,也是有固定的表示范围和字段长度。浮点类型默认为double类型,声明float常量必须要在数字后面加上f,否则出错。
浮点数在计算机上表达是有误差的,在计算机上是离散的,而在现实上是连续的。一般比较的话,都是不直接比较,通过减去浮点数来判断。
3、基础数据类型的转换
(1)boolean类型是不能被转换和转换的。
(2)字符型和整型、浮点型在混合运算中可以相互转化。容量小的类型转换为容量大的类型。byte、short、char->int->long->float->double;byte、char、short不会互相转换。
多种类型进行运算时,系统自动将他们变为容量最 大的类型来运算。
容量大的转换为容量小的要加强制转化。但是一般会有精度的损失。
4、程序的格式(important)
要让别人看得舒服,看得清楚。
(1)大括号对齐
(2)遇见大括号要缩进(用tab缩进)
(3)程序块之间要加空行
(4)并排语句间要加空格(比如for语句)
(5)运算符两侧加空格
(6){}这些空号最好有空格
(7)要成对编程
5、运算符
(1)++:先把i1做赋值运算后再把i1进行自加。()运算没有影响。
k=i++等价于k=(i++)
(2)“+”运算只要有一个有string类型的话。系统会另外把操作数变为字符串类型的。特别地,当运行打印的时候,无论什么类型都自动转为字符串进行打印。例如
int c=8;
system.out,println(c);```
5、if、for语句
6、对象
对象可以看成是静态属性(成员变量)和动态属性(方法)的封装体。
类是用来创建同一类型的对象的模板。在该类中定义了该类对象所应具有的成员变量以及方法。
(reusable、extensibility)
成员变量默认初始有值的,局部变量是没有初始化的。
所以使用变量前最好要初始化。
成员变量在类体定义有效。(记住所有的变量在定义的大括号里面有效)
Java除了基本类型之外的类型都是引用类型。
7、关于程序的执行
(1)程序存储在硬盘里-->经过Load到内存区
(2)在内存中的代码-->找到main方法开始执行(可能会调用系统代码)
(3)在执行过程中有一些内存管理
比如把new出来的东西存放在heap区
把局部变量存放在stack区
把静态变量、字符串常量存放在data segment
把代码存放在code segment
8、关于引用类型变量的内存
引用类型一般占用两个内存空间
(1)当定义一个引用类型变量时,比如String s;此时申请了一小块内存,且值为null;
(2)当s= new String(“hello world”)时此时那个值为null的内存被赋值,且通过该值指向找到s对象的内存空间。且指向的内存空间是堆内存(heap seg)。即对象都是存放在stack里,当系统觉得该对象不会再被使用了,系统就会对该对象进行回收。
java的引用概念就相当于c的指针。
(3)方法是只有调用的时候才会占用内存。
(4)同一类的*每个对象有不同的成员变量存储空间*。
(5)同一类的*每个对象共享该类的方法*。非静态方法是针对每个对象进行调用的。就是说要通过对象的.操作才能被使用。
9、构造函数
系统默认有构造函数,但是只要已经定义了系统就不会自动添加了、
构造方法没有返回值且与类名完全一样。
例如:
```java
Public Person {
private int id;
private int age;
Person(int _id, int _age) {
id=_id;
age=_age;
}
}
10、关于Java约定俗成的规则
(1)类名的首字母要大写
(2)变量名和方法名首字母要小写
(3)运用驼峰表示,后面的每个单词都应该大写
11、重载函数
名字一样,参数不一样(含类型不一样,参数个数不一样)的方法们就叫重载。
12、this关键字
(1)在类的方法定义中使用this关键字代表使用该对象的引用。
this指向对象自己。
(2)必须指出使用当前使用方法的对象是谁必须使用this。
(3)解决类方法的参数与成员变量重名的问题。
13、static关键字
(1)非static成员变量是每个类都有一份的,但是static成员变量是该类的各个对象共享一份的。
(2)static变量存放在data seg(数据区)。
注:字符串常量也是引用对象,并且存储在data seg(数据区里面)。
(3)任何一个对象都可以访问静态成员变量。也可以通过类名加.运算访问。
只要通过类名加.运算访问的变量的变量都是静态成员变量。
(4)静态的值的作用可以是用来计数用。
14、package和import语句
为了管理大型软件系统众多类的命名冲突问题,java使用包(package)机制,提供类的多重类命名空间。
(1)package必须定义在程序的第一行
(2)格式为:package pk1[pk2][pk3]
(3)约定俗成的命名规范是用公司域名命名package
(4)package里面的.代表一个层次,即一个文件夹。
(5)如果没有import时,则在使用时要加上包的路径
(6)查看系统自带的包的路径
【安装的盘符】D:\jdk\jre\lib\rt.jar
常用的包
java.lang的类(比如String、Math、Integer、System、Thread)这些可以不包含直接使用。
java.awt——包含了抽象窗口的工具集的多个类,用于构建和管理图形界面。
java.applet——包含applet运行所需的一些类。
java.net——包含了与网络相关的类。
java.io包含了提供多种输入、输出功能的类。
java.util包含了一些实用的工具类,如定义系统特性,使用与日期相关的函数。
(7)把自己的类打包成一个jar包直接cd到目录后,使用命令:jar
jar -cvf jar_name.jar .(指把目录的所有文件打包成jar包)
【听得不太懂得视频:21~23,讲如何使用自己的jar包,用到再重新看】
15、类的继承
(1)语义上有is-a的关系。
(2)java只支持单继承。
(3)一个子类 只能有一个基类。通过继承,子类自动拥有了基类(superclass\parentclass)
(4)子类对象包含父类对象。
(5)关于父类中的访问权限问题
private只有父类自己可以用(即类内部)。
public所有地方都可以使用。
protecte只要是父类、子类或者同一个包下都可以使用。
default的话就只有父类以及和父类在同个包下的都可以使用。
注:对于class的修饰符只有public、或者default可以用。
public 类可以在任何地方使用,而default只能在同一个包内使用。
16、接口
(1)接口是抽象方法和常量定义的集合。
(2)从本质上讲,接口是一种特殊的抽象 类,这种抽象类只包含常量和
方法的定义,而没有变量和方法的实现、
(3)抽象类有关键词abstract修饰而interface里面的方法没有abstract。
interface里面的变量都是public static final类型的。
public interface runner {
public static final int id = 1;
public void start();
public void run();
public void stop();
}
(4)多个无关的类可以实现同一个接口。
(5)一个类可以实现多个无关接口。
(6)与继承关系类似,接口与实现类之间存在多态的关系。
(7)语法格式
<modifier> class <name> [extends <superclass] [implements <interface] [,interface]* {
<declarations>*
}
17、 异常处理
异常指的是运行期出现的错误。
java异常是指在程序运行的过程中发生的一些异常事件(如0溢出、数组下标越界、所要读取的文件不存在等)
解决时观察行号和错误的名字最重要。敢于调试。
(1)设计良好的程序应该在异常发生时提供处理这些错误的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果。
(2)java程序在执行的过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将被提交给java运行时系统,这个过程称为抛出(throw)异常。
(3)当java运行时系统接收到异常对象,会寻找
能够处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获异常。(catch)
(程序是调试出来的!!)
(4)异常的分类
它的根类是throwable。下一层是error和exception。e rror是虚拟机错误,我们处理不了。其中exception是可以处理额。
exception下面还有一个runtimeexception。
总结:
error:称为错误,有java虚拟机生成并抛出,包含动态链接失败,虚拟机错误等,程序对其不做处理。
exception:所有异常类的父类,其子类对应了各种各样可能出现的异常事件,一般要用户显式的声明或捕获。
runtime Exception:一类特殊的异常,如被0整除、数组下标超范围等,其产生比较频繁,处理比较麻烦,如果显式的声明或捕获将会对程序的可读性以及运行效率影响很大。因此系统将自动检测并将它们交给缺省的异常处理程序(用户可不必对其处理)
Finally子句
try代码段包含可能产生例外的代码。
try代码段后跟有一个或多个catch代码段。
每个catch代码段声明其能够处理一种特定类型的异常并且提供处理的方法。
当异常发生时,程序会终止当前的流程,根据获取的异常的类型去执行相应的catch语句段。
其中finally语句段的代码是无论如何都会被执行的。
finally语句为异常处理提供一个统一的出口,使得在控制流程转到程序的其它部分之前,能够对程序的状态作统一的管理。
无论try所指定的程序块是否抛出异常,finally所指定的代码都要被执行。
通常在finally语句中可以进行资源的清除工作,例如:
关闭打开的文件
删除临时文件。
等等
其中对catch到的错误可以用e.getMessage();
或者e.printStackTrace()来打印错误信息。
关于异常的捕获和处理
当有method1和method2和method3,
method3有异常exception3,
method1调用了method2,method2调用了method3,并且 method1和2都throws了exception,method3 throws了exception并且在throw new exception("Error")做了处理。
声明自己的异常类
1、继承java.lang.Exception类声明自己的异常类
2、在方法适当的位置生成异常类的实例并用throw语句抛出
3、在方法的声明部分用throws语句声明该方法可能抛出的异常。
其中异常和重写的关系
重写时如果抛出异常的话必须抛出和父类一样的异常或者不抛出异常来重写。