网站首页 > java教程 正文
一,数据类型
java中一共有8中基本类型,其中有4种整型(byte、short、int、long)、两种浮点类型(float、double)、1种字符类型char和1种用于表示真值的boolean类型。
包装类型:基本类型都有对应的包装类型,基本类型与其对应的包装类型之间的赋值使用自动装箱与拆箱完成。
对象包装器与自动装箱
包装器:有时需要将int这样的基本类型转换为对象,所有的基本类型都有一个与之对应的类,例如Integer类对应基本类型int。通常这些类称为包装器。
自动装箱:在往ArrayList中添加int类型的时候,编译器将会自动的将该int类型的数据转化为Integer类的对象,这种变换称为自动装箱。
自动拆箱:将一个Integer对象赋给一个int值时,将会自动拆箱。
二,关键字
1,final
(1)数据
用final修饰数据时,表示数据为常量,可以是编译时常量,也可以是在运行时被初始化后不能被改变的常量。
对于基本类型,final使其数值不变。
对于引用类型,final使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。
(2)方法
声明方法不能被子类重写。
Tip:private 方法隐式地被指定为 final,如果在子类中定义的方法和基类中的一个 private 方法签名相同,此时子类的方法不是重写基类方法,而是在子类中定义了一个新的方法。
(3)类
声明类不允许被继承。
2,static
(1)静态变量
又称为类变量,也就是说这个变量属于类的,类所有的实例都共享静态变量,可以直接通过类名来访问它。静态变量在内存中只存在一份。
(2)静态常量
如:
(3)静态方法
静态方法在类加载的时候就存在了,它不依赖于任何实例。所以静态方法必须有实现,也就是说它不能是抽象方法。
静态方法只能访问所属类的静态字段和静态方法,方法中不能有 this 和 super 关键字,因此这两个关键字与具体对象关联。
(4)静态语句块
静态语句块在类初始化时运行一次。
3,this
this是对象本身的一个引用,代表对象本身。可以理解为指向本对象的一个指针。用法包括:一是指示隐式参数的引用,二是调用该类的其他构造器例子如下:(本例子就是隐式参数的引用的实现)
Tip:这里提到了隐式参数,对应的还有显式参数。
显式参数是方法中传递进来的形参,如本例的name和salary。
隐式参数是方法前命名的参数,如employee类的name属性和salary属性。
4,super
super是用来调用超(父)类的方法、属性的。但super不能像this一样的理解为是一个对象的引用。比如不能将值super赋给另一个对象变量。仅仅只是一个特殊的关键字。
用法包括:一是调用超类的方法,二是调用超类的构造器。
例子如下:(本例就是调用超类构造器的实例)
三,常用运算知识
1,方法参数
Java程序设计语言总是采用按值调用。
按值调用表示方法接受的是调用者提供的值。而按引用调用表示方法接受的是调用者提供的变量地址。
当方法参数为基本数据类型时,方法不会改变该参数的值。
当方法参数为对象时,可以改变原对象的某些属性。因为方法得到的是对象引用的副本,原来的对象引用和这个副本都引用同一个对象。
方法不能让一个对象参数引用一个新的对象。
2,类型转换
Java不能隐式执行向下转型,因为这会使精度降低。
向下转型只能使用强制类型转换。
四,String
String类的实例是一个字符串,String不是一个基本数据类型。String 被声明为 final,因此它不可被继承。
在 Java 8 中,String 内部使用 char 数组存储数据。
在 Java 9 之后,String 类的实现改用 byte 数组存储字符串,同时使用 coder 来标识使用了哪种编码。
String, StringBuffer and StringBuilder
1, 可变性
String 不可变
StringBuffer 和 StringBuilder 可变
2.,线程安全
String 不可变,因此是线程安全的
StringBuilder 不是线程安全的
StringBuffer 是线程安全的,内部使用 synchronized 进行同步
五,object的通用方法
1,equals方法
object类中的equals方法用于检测一个对象是否等于另外一个对象。
equals方法需要具有以下特性:
(1)自反性:对于任何非空引用x,x.equals(x)应该返回 true。
(2)对称性:对于任何引用x和y,当且仅当y.equals(x)返回true时,x.equals(y)返回true。
(3)传递性:对于任何引用x、y和z,如果x.equals(y)返回true,y.equals(z)返回true,x.equals(z)也应该返回true。
(4)一致性:如果x和y引用的对象没有发生变化,反复调用x.equals(y)应该返回同样的结果。
(5)对于任何非空引用x,x.equals(null)应该返回false。
实现:
(1)检查是否为同一个对象的引用,如果是直接返回 true;
(2)检查是否是同一个类型,如果不是,直接返回 false;
(3)将 Object 对象进行转型;
(4)判断每个关键域是否相等。
对于基本类型,== 判断两个值是否相等,基本类型没有 equals() 方法。
对于引用类型,== 判断两个变量是否引用同一个对象,而 equals() 判断引用的对象是否等价。
2,hashCode方法
hashCode() 返回哈希值,而 equals() 是用来判断两个对象是否等价。等价的两个对象散列值一定相同,但是散列值相同的两个对象不一定等价,这是因为计算哈希值具有随机性,两个值不同的对象可能计算出相同的哈希值。
字符串的散列码(哈希值)相同,因为字符串的散列码是由内容导出的。
在覆盖 equals() 方法时应当总是覆盖 hashCode() 方法,保证等价的两个对象哈希值也相等。
3,toString()方法
它会返回表示对象值的一个字符串。
打印数组需要调用静态方法Arrays.toString();
打印多维数组需要调用Arrays.deepToString。
六,其他知识点
1,==和euqals的区别
==的作用是判断两个对象的地址是不是相等,即判断两个对象是不是同一个对象。(基本数据类型= =比较的是值,引用数据类型= = 比较的是内存地址)
equals() : 它的作用也是判断两个对象是否相等,它不能用于比较基本数据类型的变量。
2,hashcode和equals
重写equals方法时必须要重写hashcode方法。原因如下:
1,如果两个对象相等,则 hashcode 一定也是相同的
2,两个对象相等,对两个对象分别调用 equals 方法都返回 true
3,两个对象有相同的 hashcode 值,它们也不一定是相等的
4,因此,equals 方法被覆盖过,则 hashCode 方法也必须被覆盖
猜你喜欢
- 2024-10-07 Java基本知识点概念(java基本知识点概念图片)
- 2024-10-07 Java知识点(含PDF)(java必学知识点)
- 2024-10-07 java基础知识点(java基础知识点面试题)
- 2024-10-07 2022最新Java核心知识点汇总,从入门到精通一步到位
- 2024-10-07 纯干货:Java学习过程中的21个知识点和技术点
- 2024-10-07 Java基础(java基础案例教程第二版答案)
- 2024-10-07 Java基础知识点有哪些 如何快速步入Java行业
- 2024-10-07 JAVA编程基础知识点(java编程基础知识点总结)
- 2024-10-07 java核心知识点最全整理(java核心知识pdf)
- 2024-10-07 初学者怎么学Java编程 Java哪些知识点最重要
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)