Java中小知识点

java中“==”与equals()的区别

在java中,存在“==”和equals这两个判断变量(或对象)是否相等的方法,“==”是逻辑运算符,equals()是Object的一个成语方法,也就是说java中的所有对象都可以用equals()这个方法。至于两者的区别,网上有说法说“==”比较的是对象引用是否相同,也就是说判断引用变量是否指向同一个对象,而equals()方法比较的是对象中的值。从对象的本质来说,这种说法是不对的,对象并没有一个确定的值。事实上,equals()是任何类都可以重写的一个方法,程序员可以自定义equals()方法的实体。对于String类来说,确实如上面的说法一样,equals()方法比较的是两个String 对象所代表的字符串的值是不是相同,但其原因是String类中重写的equals()方法实现了比较String对象中字符串值的功能。

java的强制类型转换

基本类型之间的转换只能在数值类型之间进行,这里所说的数值类型包括整形、字符型、浮点型,但数值类型和布尔类型之间不能进行类型转换。

引用类型之间的转换只能在具有继承关系的两种类型间进行,如果没有继承关系的两种类型进行强制类型转换,将会产生编译错误。

java访问控制符的访问权限

public:公共访问权限
private:当前类访问权限
default:包访问权限
protected:所在类的子类访问权限。如果使用protecte修饰一个方法,通常是需要其子类重写这个方法。

访问控制符的作用在于控制一个类的成员是否能被其他类访问(控制它的作用域),对于局部变量,其作用域就是它所在的方法,故局部变量不能被这些访问控制符修饰。

由于外部类不属于任何一个类,也就不存在所在类内部和所在类子类的说法,所以private和protected对外部类来说没有意义。外部类可以用public修饰,使用public修饰的外部类可以被所有类使用,default修饰的外部类只能被处于同一个包中的其他类使用。

java构造器的返回值

在java中,类的构造器(Constructor)在形式上与成员变量差不多,区别在于构造器不能指定返回值类型,不能用void声明构造器没有返回值,更不能在构造器中显示return某个值或该类的实例,如果在类名前加上类型定义的函数,则会被编译器认为是普通的成员函数。从本质上来说,构造器是有返回值的,构造器在使用new创建对象的时候被调用,返回值总是该类的实例,故无须定义返回值。

Java源文件的命名规则

1、Java源文件的 后缀必须是.java

2、在java源文件的类没有用public修饰的情况下,主文件名可以是任意的,一个java文件里可以有无数个类。但如果如果源文件中存在一个public修饰的类,这个源文件的文件名必须与该类的名称相同,也就是一个java源文件中最多只能定义一个public修饰的类。

3、最好在一个java源文件中只定义一个类,内部类除外。不同的类使用不同的源文件定义,java源文件的文件名与类名字相同,首字母大写。

java中static关键字的作用

static在java语言中有着修饰成员变量、成员方法、内部类、初始化块这四个作用,将static修饰的变量和方法直译为静态成员变量和静态成员方法并不能直接在字面意思上体现他的作用,static真正的作用是区分修饰的东西到底属于该类(Class)本身还是属于对象(instance)。有static修饰的成员属于类本身,而没有static修饰的成员属于该类的实例,也就是说static修饰的成员变量或方法可以通过类名或类的实例使用,而没有static修饰的方法和成员变量必须在该对象的某一个实例中才能通过实例使用。

由于static修饰的成员方法可以直接通过类名调用,而this指针则是代表调用该方法的具体的对象,所以static方法中无法调用非静态的的成员方法和成员变量。同时,static方法中不能使用this和super。

java的main()方法中不能new内部类对象

java的main()方法是个静态方法,它是游离于任何类之外的(就跟C/C++一样,单独一个main方法),因此某类的非静态内部类对它而言是不直接可见的,也就无法直接访问。java中static修饰的成员不能访问没有用static修饰的成员。
main 方法是个静态方法,而静态类不是个静态内部类,所以不能直接初始化。
对main方法而言,虽然写在类中,非静态变量不能从静态上下文中引用

synchronized

synchronized 关键字可以修饰方法、代码块。不能修饰构造器、成员变量。


   转载规则


《Java中小知识点》 rookiegan 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Java中的变量 Java中的变量
Java中的变量C/C++的变量类型和存储区域在C/C++语言中的变量,分为静态和非静态的全局变量和局部变量,可以分布在堆、栈、和全局数据区,如下表所示: 变量类型 存储区域 静态全局变量 全局数据区 非静态全局变量 全局数
2018-08-13
下一篇 
面向对象 面向对象
面向对象将现实世界的所有事物都看作对象,根据这些事物的本质特点和相互关系,把他们抽象为一个个具体的类,和事物是构成世界的基本单元一样,类和对象是构成面向对象程序的基本构成单元。这样设计的好处是将软件系统设计得和客观世界更加相识,更符合人类的
2018-07-03
  目录