Java基础,
Java基础,
1、递归概念
简单的递归
Public class Test{
Public static void Main(String [] args)
{
System.out.println(method(5));
}
Public int method(int n)
{
If(n==1)
Return 1;
Else
Return n*method(n-1);
}
}
2、结束程序
直接return 或者 return -1 自己提示
3、标识符
Java对各种变量、方法和类等要素明时使用额字符序列成为标识符。凡是自己可以起名字的地方豆角标识符,都遵守标识符的规则。
4、程序执行过程
(1)Load到内存区
(2)找到main方法开始执行
5、Java基本数据类型
4类8种
6、引用数据类型
- 类——class
- 接口——interface
- 数组
7、基础类型转换
- 布尔类型不可以转换为其它的数据类型
- 容量小的类型自动转换为容量大的数据类型
- 容量大的数据库类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意.
- 有多重类型的数据混合运算时,系统首相自动的将所有数据转换成容量最大的哪一种数据类型,然后在进行计算。
8、break和continue
(1)break遇见用于终止某个语句块的执行。用在循环语句体重,可以强行退出循环;
(2)continue语句用在循环语句体重,用于终止某次循环过程,跳过循环体中continue语句下面未执行的循环,开始下一次循环过程。
9、打包命令
在要打包的最上级目录 ——控制台:jar -cvf name.jar .
10、类的继承与权限控制
- 继承:extends
- 一个子类只能有一个基类,一个基类可以派生出多个子类。
11、构造方法
(1)子类的构造的过程中必须调用其基类的构造方法。
(2)子类可以在自己的构造方法中使用super(argument_listt)调用基类的构造方法。
使用this(argument_list)调用蓓蕾的另外的构造方法
如果调用super,必须写在子类构造方法的第一行
(3)如果子类的构造方法中没有显示地调用基类构造方法,则系统默认调用基类无参数的构造方法。
(4)如果子类构造方法中既没有显示调用基类构造方法,而基类中有没有无参的构造方法,则编译出错。
12、equals
- Instanceof 比较符 :判断一个类是否是一个类型
- If(obj instanceof cat) 如果obj对象是一个cat类,则返回真。
- 一般该方法会被重写,具体的还要看重写的方式写的是什么。
13、对象转型(casting)
(1)一个基类的引用类型变量可以“指向”其子类的对象。
(2)一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)。
(3)可以使用 引用 变量 instanceof类名 来判断该引用型变量所“指向”的对象是否属于该类或该类的子类。
(4)子类的对象可以当做基类的对象来使用称作向上转型(upcasting),反之称为向下转型(downcasting)。
14、动态绑定或多态
动态绑定是指“在执行期间(而非编译期间)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。”
存在的3个条件:
15、抽象类
(1)用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方式时,该方法叫做抽象方法。
(2)含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。
(3)抽象类不能实例化
(4)抽象方法只需声明,而不需实现。
16、Final关键字
(1)final的变量的值不能够被改变
(2)final 的方法不能够被重写
(3)final的类不能够被继承
17、接口
• 多个无关的类可以实现同一接口
• 一个类可以实现多个无关的接口
• 与继承关系类似,接口与实现类之间存在多态性
接口(interface)是抽象方法和常量值的定义的集合。从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和 方法的定义,而没有变量和方法的实现。
特性:
a. 接口考科一多重实现
b. 接口中声明的属性默认为public static final的;也只能是public static final的
c. 接口中只能定义抽象方法,而且这些方法默认为public的,也只能是public的
d. 接口可以继承其它的接口,并添加新的属性和抽象方法
使用implements来实现,实现多个接口,使用“,”隔开
18、异常处理
打印异常的堆栈信息:e.printStackTrace()
异常类的分类:
使用自定义异常
a. 通过集成java.lang.Exception类(或者RuntimeException)声明自己的异常类
b. 在方法适当的位置生成自定义异常的实例,并用throw语句抛出。
c. 在方法的声明部分用throws语句声明该方法可能抛出的异常。
19、数组的使用(引用类型)
数组声明:
Type var[]; 或 type [] var;
Java语句中声明数组时不能指定其长度,使用关键字new创建数组对象。
数组名=new 数组元素的类型 [ 数组元素的个数 ]
数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐式初始化。
数据的拷贝:使用java.lang.System类的静态方法
Public statci void arraycopy ( object src, int srcPos, object dest, int destPos, int length )
可以用与数组src从第srcPos项元素开始的length个元素拷贝到目标数组从destPost项开始的length个位置。如果原数据书面超过目标数组便捷会抛出“IndexOutOfBoundsException”异常。
20、StringBuffer类
代表可变的字符序列
21、容器
容器API
容器类对象在调用remove、contains等方法是需要比较对象是否相等,这回涉及到对象类型的equals方法和hashCode方法;对于自定义的类型,需要重写equals和hashCode方法以实现自定义的对象相等规则。
重写equals方法必须重写hashCode方法。当对象被作为“索引”的时候,会使用到hashCode方法。
Iterator接口:
a. 所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象。
b. Iterator对象称作迭代器,用以方便的实现对容器内元素的便利操作。
c. Iterator接口定义了如下方法:
i. Boolean hasNext(); //判断游标右边是否有元素
ii. Object next(); //返回游标右边的元素并将游标移到到下一个位置
iii. Void remove(); //删除游标左面的元素,在执行完next之后该操作只能执行一次
22、泛型
起因: JDK1.4以前类型不明确
解决办法:
在定义集合的时候同时定义集合中对象的类型
(1)可以在定义Collection的时候指定
(2)也可以在循环时用Iterator指定
好处:
增强程序的可读性和稳定性
23、IO输入输出流
在Java程序中,对于数据的输入/输出操作以“流”(stream)方式进行;J2SDK提供了各种各样的“流”类,用以获取不同种类的数据;程序中通过标准的方法输入或输出数据。
ObjectIO
序列化
Interface Serializable 可以序列化的接口 (标记接口)
transient 关键字,透明的,作用:使该成员不以考虑
24、多线程
进程是一个静态的概念,是指放在内存中未被执行的程序。
Thread t1=new Thread(具体对象);
T1.start();
//调用一个线程,但不是同时运行
T1.run();
3. 线程同步问题
解决方案:使资源独占。
synchronized关键字 :锁定当前对象
4. 死锁问题
加大锁的粒度来解决。
wait方法 来自object类
This.wait();
This.notify(); 唤醒等待在某一个对象上的线程
this.notifyAll(); 唤醒所有等待的线程。
Wait 和sleep 区别:
①、wait时别的线程可以访问锁定对象,不能自动唤醒,需要别的线程来唤醒。(调用wait方法的时候必须锁定该对象)
②、Sleep时别的线程也不可以访问锁定对象,结束后会自动唤醒。
相关文章
- 暂无相关文章
用户点评