关于Java自己记不住和不知道的知识点

学习狂神说Java整理一些关于Java基础的琐碎知识

Java运算

float型数据后面要加上F
long型后面要加上L
byte short char 做运算其结果为int型

^为异或,如A=“0011” B=“0101” C=“A^B”,则C=“0110” 相同为零,不同为1

2<<3=16
‘<<’ 相当于 *2
‘>>’ 相当于 /2

当运算前面有字符串,则+变为字符串连接符,其后的运算不会执行

注释开发

JavaDoc

@author 指明开发该类模块的作者
@since 指明最早需要使用的jdk版本
@version 指明该类模块的版本
@see 参考转向,也就是相关主题
@param 说明方法中的参数
@return 说明方法返回值
@throws 说明方法可能抛出的异常

使用idea生成JavaDoc文档,详情可参阅
链接: 使用idea 生成Javadoc文档

for的增强型 适用于JDK1.5之后的版本

for(数据类型 变量名 : 数组或者集合){
程序名
}
int [] arr={1,2,3,4,5};
for(int i :arr){
System.out.println(i);
}
作用:遍历数组(将数组arr中的元素依次赋值给i,然后对i进行输出,如果对i进行修改,并不会影响arr中的值)
缺点: 没有索引,不能对容器里面的元素修改

流程控制的小知识

idea也是一个反编译工具,可以将编译好的class文件直接放入idea中进行查看编译后的代码。

while与do…while在条件满足时其输出结果相同,只有在条件不满足时才会有不同的输出结果
练习2

关于方法

方法可以存于类中,也可以存于类中的对象中。
传值的为实参,接受参数的为形参

方法重载:方法名相同但是传递的参数类型不同,程序会根据传递的参数类型不同加载不同的方法
方法重载

如何使用命令行传递参数:(主类也可以传递参数)
命令行传参

可变参数:可以看作是定义了一个数组
可变参数

递归

递归包含两个部分:函数体以及约束条件,即递归头以及递归体
递归
递归举例
对于数据庞大的计算,不要使用递归。

作业,一个简易计算器

提示:使用switch,还有其他方法,多想想。
链接

数组

定义:int[] nums= new int[10]
即:数组类型[] 变量名 = new 数组类型[数组长度]

数组的初始化:

静态初始化:定义之后就赋值了。如int[] nums = {1,2,3,4}
动态初始化:定义之后再赋值,如int[] nums= new int[10];int[0]=1,int[1]=1……
数组的默认初始化:在数组定义之后其实便已经赋值好了,数字默认为0,字符串默认为null。

数组的类

在这里插入图片描述

在这里插入图片描述
则a中第二个到第四个元素将都被0覆盖

冒泡排序的优化

冒泡排序的优化

自己写的冒泡排序法,可以正常输出,记录一下(j=a.length-i-1更好)
自己写的冒泡排序法

面向对象的编程

面向对象

构造体

有参和无参构造
在这里插入图片描述

new关键字是在使用他的时候定义的,其本质就是调用构造器并产生新的空间
如Person zhangsan = new Person();
这时就可以使用他了。

若只使用有参构造,那无参构造空着不写就好,但是要有。

我觉得有参构造就是在变量会发生变化的时候用的,比如前台给后台传递的值,而无参构造就是发出的是固定的值的时候使用的比如弹窗。有参会更常用些。

封装

当使用封装一个类时,将使用private,私有变量,外部不能使用和调用这个变量。
封装的优点:
1.提高程序的安全性,保护数据
2.隐藏代码的实现细节
3.统一接口(都是使用get和set)
4.系统可维护性增加了

继承

在Java中所有的类都默认继承Java类
在Java中只有单继承,没有多继承;即,一个子类只能继承一个父类,一个父类可以被多个子类继承。
System.out.println(super.属性名) 可以调用父类的属性值
或者直接super.方法名(),调用父类的属性值
super与this的注意点

重写

1.重写只跟非静态的方法有关,跟静态的方法没有关系。
2.子类继承了父类的方法,然后子类就可以重写父类的方法(方法名要一致)。
3.参数列表必须相同
4.修饰符:范围可以扩大但不能缩小;(public>protected>defult>private)
5.抛出的异常范围可以缩小,但是不能扩大(ClassNotFoundException --> Exception(大))
为什么重写?
父类的功能子类不一定需要或者不一定满足。
使用方法:Alt + Insert:Override;

多态

多态的注意事项
2中类型转换只有父类和子类中有的方法才可以转换。
在这里插入图片描述

instanceof

X instanceof Y
会判断二者是否有父子关系,如果有就编译通过,没有会报错;然后会看X指向的实际类型是否为Y的子类型,如果是,则结果为true,否,结果为false。

类型转换

存在条件:父类引用指向子类对象
例:Person person = new Student();
这里的Person 就是Student的父类,反过来是不成立的。
如果是子类转父类可以直接转(子类转父类可能会丢失一些方法),但是如果是父类转子类就需要强制类型转换了。
格式:(子类名)变量名.调用的子类的值();

static

如果类中有静态变量/方法,即用static定义的变量
可以使用(类名.变量名)直接调用,也建议这样使用
静态变量在类加载时就执行,比非静态的类更早存在
而且只执行一次。
可以使用import static 来静态导入包
{} 只有大括号而没有名字的叫匿名代码块,在静态变量之后执行,在构造方法之前执行。可以用来给变量赋初试值使用。

被final修饰之后将无法被继承,即没有子类了。

实例是什么?

实例是指new出来的一个对象,他在内存中有确定的储存空间

abstract类

抽象方法,只有方法名,没有方法的实现。实现他的方法都交给他的子类去实现。
抽象类不能new,只能靠子类去继承实现他。
抽象方法只能存在于抽象类里面,但是抽象类里面可以有普通的方法。

接口:约束和实现分离

Java的类只能单继承,但是Java的接口可以多继承。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值