java
来源:互联网 发布:天刀捏脸数据女 2016 编辑:程序博客网 时间:2024/06/03 19:13
昨天做了个测试,结果非常惨,败给了平时没有注意到的一些小知识点,所以写了这篇文章,希望自己能够记住。
1、Java面向对象编程的三大特点 :继承、封装、多态
2、Java中的构造器(构造方法)可省略,因为会有一个默认的无参构造方法,普通方法也可以与类名相同。
package Test;
public class Test {
public static void main(String[]args){
}
public void Test(){
}
}
3、Java内部类分为三种:
成员内部类:外部类.内部类 对象= 外部类对象.new 内部类();
内部类的优先级和外部类的属性相同,需要外部类成员去调用。
package Test;
public class Teacher {
public static void main(String[]args){
Teacher.Student stu = new Teacher().new Student();
}
class Student{
}
}
静态内部类:外部类.内部类 对象名= new外部类.内部类();
此时内部类的优先级和外部类相等,相当于静态方法,不需要类的对象;package Test;
public class Teacher {
public static void main(String[]args){
Teacher.Student stu =new Teacher.Student();
}
static class Student{
}
}
函数内部类:此时内部类只能在函数(方法)中使用,优先级相当于方法内的局部变量。 package Test;
public class Teacher {
public static void main(String[]args){
Teacher tea = new Teacher();
}
public void Study(){
class Student{
}
Student stu = new Student();
}
}
4、==号和equals
==号判断的是地址,equals判断值
package Test;
public class Teacher {
public String name;
public static void main(String[]args){
Teacher tea = new Teacher("张三");
Teacher tea2 = new Teacher("张三");
System.out.println(tea==tea2);
System.out.println(tea.name.equals(tea2.name));
}
//构造方法
public Teacher(Stringname){
this.name=name;
}
public void Study(){
class Student{
}
//创建Student类
Student stu = new Student();
}
}
代码运行结果是false和true
因为tea和tea2并不是同一个对象,因而其地址也不同,故得到的结果是false
而因为tea和tea2的name属性值是相同的,所以得到的结果为true。
5、关于+号
如果+号两边同为八大基本类型,则为数学运算符,若任意一边或两边为类类型,则为连接 符。
package Test;
public class Test2 {
public static void main(String[]args){
int a=1;
char b = '2';
byte c = 3;
String d ="4";
System.out.println(a+b+c);
System.out.println(a+b+c+d);
}
}
以上程序运行结果为54和544,因为char会强转为int类型(利用ASCII),所以会进行 数学运算,而第二个打印语句执行的是前面的数学运算,在加上后面的字符串,+号就成了 连接符,即最后变为一个字符串:”544”。
6、异常全部继承于Throwable,Object是所有类的父类。异常分为受检异常(非运行时异 常)和非受检异常(运行时异常)例如被除数为0就是非受检异常。非受检异常可以不捕 捉,程序不会报错(不运行的情况下),受检异常一定要捕捉。而且不管有没有异常,程序 总是会运行finally代码块,所以finally部分是一定会运行的。
7、流
分为字节流和字符流
字节流:InputStream OutputStream (是接口,不能直接new)
字符流:BufferReader BufferWriter (普通类,可以直接new)
8、线程
线程的 riun方法只是一个普通方法,调用run方法并不代表着线程启动,start()才是 线程的启动方法
9、八大基本数据类型
byte char short int long float double boolean
Jdk为其每一个都提供了一个类类型
Byte Character Short Interger Long Float Double Boolean
使用类类型可借用你其方法来实现类型转换等各种功能。
高精度赋值给低精度数据会出错,比如long类型赋值给int类型long表示的8个字节,int只有4个,会失去精度,所以会报错,反过来则不会,低精度转高精度就没问题。
9、抽象类和接口的异同?
1)属性
抽象类中属性可以是常量,也可以是变量
接口中的属性必须是常量
2)方法
抽象类中的方法可以是抽象方法,也可以是普通方法,可以有构造方法
接口中的方法必须是抽象方法。
3)接口中常量和抽象方法的访问权限一定是public,抽象类不一定
10、静态变量与实例变量
1)语法定义上来说,静态变量定义时要加static,实例变量不用
2)静态变量属于类,实例变量属于实例,实例变量必须要先实例化才能使用 ,静态变量 不需要,直接使用类名来引用即可。
- java
- JAVA
- JAVA
- JAVA
- java
- Java
- Java
- JAVA:
- java
- java
- java
- java
- Java
- java
- java
- java
- JAVA?
- java
- 从零开始实战机器学习(1)—K近邻算法
- WebStorm工程配置
- 2017.7.11 && numpy的broadcasting解析
- HDU
- 基于迅为itop4412开发板的4G模块SIM7100的拨号上网的实现
- java
- js数值的格式化函数
- Java做可视化日历
- python日志logging
- Google V8 引擎
- 第一次作业
- 支持向量回归
- 调用Process.waitfor导致的进程挂起
- BZOJ 2440 完全平方数