Java 基础整理(一)
1,面向对象的三大特性:封装、继承、多态
封装:通过访问控制符来操作那些暴露那些隐藏,按权限递增列出。private(当前类访问权限)、default(包访问权限)、protected(子类访问权限)、public(公共访问权限)
继承:Java是单继承的,关键字extends。作用是让子类对父类功能进行扩展,能获取父类的成员变量和方法。也是一种规范吧
- 1,注意不过子类不能获取父类的构造器
- 2,尽量隐藏父类内部的数据
- 3,不要让子类可以随意访问、修改父类的方法。
- 4,尽量不要在父类构造器中调用将要被子类重写的方法
- 5,如果要调用父类的方法和属性,直接用super.方法名或者变量名
多态:一个是编译时类型,一个是运行时的类型。编译类型由声明的类型决定,运行类型由实际赋值的类型决定。如果编译时类型和运行时类型不一致,就可能出现多态
- 上转型:把一个子类对象直接赋给一个父类对象引用变量,无须进行类型转换,因为系统自动完成的。证实了子类是一个特殊的子类。
2,数组是引用数据类型,定义数组时不能指定数组的长度
3,重写和重载:
重写是发生在继承的父子类之间的,子类有和父类相同的方法(包括方法名,返回值,参数个数和类型)
重载发生在同一个类中,方法的方法名相同,返回值、参数不同
重写父类方法时,访问的权限只能更大或者相等
方法重载时,尽量不要包含可变形参,可读性降低了。
4,强制类型转换
基本类型,只能在数值类型之间进行,数值类型不能与布尔类型之间进行转换。
- 基本类型包含数值型和布尔类型。数值类型包括byte、short、int、long、char、float、double,布尔类型包括turn和false
引用类型,有继承关系的两个类型之间进行
- 引用类型包括类、接口、数组
- 空类型既是null类型,空引用(null)只能转换成引用类型。
5,补码计算规则
- 正数的补码和原码相同;负数的补码是其反码加1。补充,记得补码的最高位是符号位,0表示是正数,1表示是负数。
6,除零异常
一般发生除0异常是整数才会有的。浮点数除0和整数除0.0,都就不会异常
Java提供了三个特殊的浮点数值,正无穷大、负无穷大和非数(NaN)。
正浮点数除以0就会得到正无穷大;负浮点数除以0就会得到负无穷大;0.0除以0.0或者负数开方都得到一个非数(NaN)。
所有正无穷大的数值是相等的,所有的负无穷大的数值也是相等的。非数都是不相等的。
7,float a=3.4;//这样是会出现错误的,因为3.4默认是double类型的。如果要将一个的double类型的数转换成float类型就要进行强制类型转换。
8,int c=++a + 3;//运算顺序是a先自增再进行算术运算
9,左移(<<)、右移(>>)
左移n位就相当乘以2的n次方,如5 << 3,就是5*(2的3次方)= 40;负数也一样算,只不过在前面加一个负号;
右移n位就相当除以2的n次方,这都是对于正数而言的,如果是负数就要按原始方法来
10,静态导入,减少程序中代码的编写。
- 格式:import static package.subpackage…ClassName.*;
- 如:
import static java.lang.System.*;
import static java.lang.Math.*;
类里面就可以直接用了,out.println(sqrt(256));
- 如:
11,super(和this)不能出现在static修饰的方法中
12,instanceof运算符,前一个操作数通常是引用类型的变量,后一个操作数通常是一个类。这两个参数通常用有继承关系,要不就会引起异常编译无法通过。
- 主要应用用来判断一个对象的类型是否能成功,提高代码健壮性
13,初始化块的的执行在构造器之前就执行了,而静态初始化块又比普通初始化执行要早。静态代码块和静态成员是按代码的排列顺序来执行的
14,静态成员不能访问非静态成员,包括实例变量和实例方法
15,如果在静态方法里面,用this引用调用某成员,无法指向适合的对象。所以,static修饰的方法中不能使用this引用。
16,静态成员不能直接访问非静态成员。如:静态方法不能直接调用非静态方法。
17,类代码里没有定义构造器,系统将为它提供一个默认无参的构造器。如果有定义,系统就不会默认提供了。
18,如果希望通知垃圾回收机制某个对象,就要把这个对象引用变量赋值为null,如:Person p = new Person(); p = null;
19,初始化块的的执行在构造器之前就执行了,而静态初始化块又比普通初始化执行要早。静态代码块和静态成员是按代码的排列顺序来执行的
20,自动装箱拆箱过程,Integer缓存一个长度为256的数组,保存的值在-128到127。
- 如:
Integer int1 = new Integer(6);
Integer int2 = Integer.valueof(6);
int1 =int2;//这样就是直接从缓存中取Integer对象。
21,常量池专门用于在编译时就被确定下来并被保存在已编译.class文件中的一些数据。
- 发现这几种情况的在编译时期不能被确定下来。
- String s1 = “s111”;
String s2 = “s222”;
String s3 = s1 + s2; - 因为s1 s2是普通的变量,在编译时期无法确定下来,所以s3的值编译器无法在编译时期就确定下来。如果s1 s2用final修饰这样执行“宏替换”,在编译时就能被确定下来。
- 宏替换:使用final修饰,指定初始值,并且该值在编译时期就能被确定下来了。
String s4 = s1 + String.paraseString(“123”);//这样包含了方法也不能在编译时确定下来
- String s1 = “s111”;
22,final修饰属于不可变类型。如果修饰对象是引用类型时,不能改变其对象,却能改变对象的属性。
- 例如:final修饰指定的某人,就不能再改边指向其他人,但却能改变修饰人的一些属性(年龄,姓名等)
- final Person p = new Person();
- p = null;//不能再改变对象
- p.setAge(23);//这样是可以的,通过set方法改变
23,两个btye类型的数进行算术运算时,这两个数会被提升为 int 类型。
- byte a = 127;
byte b = 127;
b = a + b; // error : cannot convert from int to byte
//因为 a+b 操作会将 a、b 提升为 int 类型,所以将 int 类型赋值给 byte 就会编译出错
24,运算类型自动提升。
short s1= 1; s1 = s1 + 1; 该段代码有错,short类型在进行运算时会自动提升为int类型,也就是说s1+1的运算结果是int类型。
short s1= 1; s1 += 1; 该段代码没错,+=操作符会自动对右边的表达式结果强转匹配左边的数据类型,所以没错
25,栈常用于保存方法帧和局部变量,而对象总是在堆上分配
26,final修饰的方法不能被重写,完全可以被重载
27,abstract不能用于修饰成员变量,不能修饰局部变量,不能修饰构造器。
28,static和abstract并不是绝对互斥的,虽然不能用时修饰某个方法,但它们可以同时修饰内部类
29,接口定义的变量只能是常量,如:int i = 20;//系统编译时,自动添加public static final修饰
30,接口是多继承的(多实现的),类属于单继承的
31,接口的注意用途:
定义变量,也可用于进行强制类型转换
调用接口定义的常量
被其他类实现,就是规范,或者回调,为系统提供更好的可扩展性和可维护性
Java 基础整理(一)相关推荐
- 面经 | Java 基础 整理
文章目录 Java 基础 一.整体观/理论/概念 JDK和JRE的区别 Java 为什么可以一次编写.到处运行? java运行快吗 是编译还是解释型语言 什么是API import java 和jav ...
- JAVA基础整理(二):数组
记录JAVA基础,主要是数组部分的知识点. 该系列文章仅供自己复习使用,记录学习过程中遇到的值得注意的问题,并非记录全部知识点细节. 文章目录 前言 一.什么是数组 1.数组的部分注意事项 2.数组的 ...
- JAVA基础整理-6.Java数据类型
数据类型的分类 Java 语言的数据类型分为两种:基本数据类型和引用数据类型. 2) 引用数据类型建立在基本数据类型的基础上,包括数组.类和接口.引用数据类型是由用户自定义,用来限制其他数据的类型.另 ...
- JAVA基础整理-100.Java 多线编程
Java线程的概念:什么是线程? Windows 系统是多任务操作系统,它以进程为单位. 系统可以分配给每个进程一段有限的执行 CPU 的时间(也称为 CPU 时间片 单任务的特点就是排队执行,也就是 ...
- Java基础整理(二)
1,对象的强.软.弱和虚引用 强引用:被引用时,处于可达状态,不能被回收 软引用:当内存不足时,即使有引用也会被回收 弱引用:当系统的垃圾回收机制运行时,就会被回收 虚引用:不能通过虚引用来获取被引用 ...
- Java基础整理笔记
入门 ①常量.变量 1.字符常量System.out.println('A');System.out.println('6');System.out.println(''); //错误!//单引号间有 ...
- java基础整理_java基础部分整理
一.常用的dos命令操作符 什么是dos命令 window操作系统通过命令提示符cmd模拟ms-dos系统的功能. 常用的dos命令 切换当前盘 :想去那个盘,直接那个盘加: 快捷打开cmd ...
- Java基础整理(三)
1,JDK1.5增加泛型很大程度上都是为了让集合记住其元素的类型. 2,在接口.类.方法后增加尖括号,尖括号里放一个数据类型. 3,JDK1.5改写后List接口.Iterator接口.Map接口 4 ...
- java基础学习整理(一)
java基础学习整理(一) lesson1: D0s命令: 1.回到根目录,>cd \ 2.复制命令行下的内容,右击标记所要复制的内容,这样就已经复制好了,右击粘贴就可以了. 3.查看,设置环境 ...
最新文章
- 张一鸣、王欣、罗永浩三家对垒微信,张小龙如何应对?
- 残缺棋盘问题算法分析_javascript使用递归回溯算法和贪心算法解决马踏棋盘问题...
- Citrix无法访问本地磁盘
- python renamer模块_【免费工具集】4种免费Maya Python脚本集合:重命名、检查UV、分配重叠模型、选边,尽在EL Tool Pack...
- 在Java EE应用程序中实现自动重试
- LeetCode 555. 分割连接字符串
- 计算机网络数据链路层 --- 后退n帧协议(GBN)
- 数据库事务及事务的特征
- vue 自定义组件使用v-model
- Python中的浅复制(shallow copy)和深复制(deep copy)
- 二维图像(数组)的fftshift
- 获取基金数据python库_PYTHON爬取基金数据及基金筛选
- 怎么把word压缩到最小?
- 巨美国际教您如何开好网店?
- GY-BMP280-3.3 高精度大气压强传感器模块
- Spring Aop(入门篇)
- 足球html游戏,[盘点]球迷不可错过的足球类网页游戏
- php模板引擎 smarty笔记
- 纯JS省市区三级联动
- 六、考研数据结构笔记——数组与广义表
热门文章
- 怎么把c语言变成汇编语言,如何把汇编语言转换成C语言
- python组件的react实现_【React源码解读】- 组件的实现
- 7000字整理: 全网最详细Pandas合并数据集操作总结
- 黄渤高情商:小S和林志林同时掉到水里,你先救谁
- 一种在智能对话中实现上下文功能的方法
- 汇编语言比C51需要效率高,汇编语言与C51语言实现跑马灯实验的比较 -
- 特斯拉CEO马斯克:可能明年3月左右在中国推出Model S Plaid
- 华为捐赠欧拉 共建数字基础设施开源操作系统
- 开着开着,Model S天窗飞了!特斯拉回应...
- 《贪玩蓝月》年入10亿?背后的玩法也太“流氓”了