java学习记录(一)

整数

二进制整数的类型,0b开头即可;
	例如:int a = 0b0101:
长数字可用下划线分隔符进行分割;
	例如:int b = 1_2312_3131;

变量命名规则(规范)

    1.  所有变量、方法、类名:见名知意
    2.  类成员变量:首字母小写和驼峰原则  : monthSalary
    3.  局部变量:首字母小写和驼峰原则
    4.  常量:大写字母和下划线:MAX_VALUE
    5.  类名:首字母大写和驼峰原则:  Man, GoodMan
    6.  方法名:首字母小写和驼峰原则: run(), runRun()

运算

    java中的乘幂处理:double b = Math.pow(3, 2);
    Math类提供了很多科学和工程计算需要的方法和常数。

内存分析

内存分析:
	栈:
    	1.    每个线程私有,不能实现线程间的共享!
    	2.    局部变量放置于栈中。
    	3.    栈是由系统自动分配,速度快!栈是一个连续的内存空间!
	堆:
    	1.    放置new出来的对象!
    	2.    堆是一个不连续的内存空间,分配灵活,速度慢!
	方法区(也是堆):
    	1.    被所有线程共享!
    	2.    用来存放程序中永远是不变或唯一的内容。(类代码信息、静态变量、字符串常量)

封装

封装的使用细节:
	1.属性一般使用private.(除非本属性确定会让子类继承并且使用),提供相应的get/set方法来访问相关属性. 
	2.这些方法通常是public,从而提供对属性的读取操作。  (注意:boolean变量的get方法是用:is开头!)
    3.一些只用于本类的辅助性方法可以用private,希望其他类调用的方法用public。

多态

多态的使用要点:
	参考链接:https://www.runoob.com/java/java-polymorphism.html
    1.    多态是方法的多态,属性没有多态性。
    2.    编写程序时,如果想调用运行时类型的方法,只能进行类型转换。不然通不过编译器的检查。    	  
    3.   但是如果两个没有关联的类进行强制转换,会报:ClassCastException。 比如:本来是狗,我把它转成猫。就会报这个异常。
    4.    多态的存在要有3个必要条件:要有继承,要有方法重写,父类引用指向子类对象

对象的转型(casting)

为什么需要强制转换类型?
    1.引用变量只能调用它编译类型的方法,不能调用它运行类型的方法。这时,我们就需要进行类型的强制转换!
	 2.一个父类的引用类型变量可以“指向”其子类的对象。
	 3.一个父类的引用不可以访问其子类对象新增加的成员(属性和方法)。
	 4.可以使用 引用 变量 instanceof 类名 来判断该引用型变量所“指向”的对象是否属于该类或该类的子类。
	5.子类的对象可以当作基类的对象来使用称作向上转型(upcasting),反之称为向下转型(downcasting)

抽象类的应用场景

	参考链接:https://www.runoob.com/java/java-abstraction.html
	a. 在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。
	b. 从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性。
	抽象类的使用要点
        1.    通过抽象类,可以避免子类设计的随意性。
        2.    有抽象方法的类只能定义能抽象类
        3.    抽象类不能实例化,及不能用new来实例化抽象类。
        4.    抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用。
        5.    抽象类只能用来继承。
        6.    抽象方法必须被子类实现

接口的应用场景

	参考链接:https://www.runoob.com/java/java-interfaces.html
	a. 一般情况下,实现类和它的抽象类之前具有 "is-a" 的关系,但是如果我们想达到同样的目的,但是又不存在这种关系时,使用接口。
	b. 由于 java 中单继承的特性,导致一个类只能继承一个类,但是可以实现一个或多个接口,此时可以使用接口。
	c. 接口有以下特性:
		1.接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
		2.接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。
		2.接口中的方法都是公有的。
 	d. 接口的实现
		1.当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。
		2.类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面

	在使用中抽象类和接口我们该如何选择?
		* 如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。
		* 	如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可实现多个接口。因此可以使用接口来解决。
		* 	如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类

增强 for 循环语法

增强 for 循环语法:
	链接:https://www.runoob.com/java/java-loop.html
	for(声明语句 : 表达式)
{
   //代码句子
}
声明语句:
	声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。

表达式:
	表达式是要访问的数组名,或者是返回值为数组的方法。

ArrayList 排序

 链接:https://www.runoob.com/java/java-arraylist.html
 Collections 类也是一个非常有用的类,位于 java.util 包中,提供的 sort() 方法可以对字符或数字列表进行排序。

泛型(重难点)

泛型类、泛型接口、泛型方法
泛型可以对很多不同数据类型进行统一处理,但需要明确使用状态 另外需要注意通配符上下限问题
链接:
通配符上下限问题:https://blog.csdn.net/weixin_43194854/article/details/122617585
Java 泛型:https://www.runoob.com/java/java-generics.html
泛型详解:https://www.cnblogs.com/coprince/p/8603492.html

序列化

1.序列化:将对象写入到IO流中
2.反序列化:从IO流中恢复对象

意义:
1.序列化机制允许将实现序列化的Java对象转换位字节序列,这些字节序列可以保存在磁盘上,或通过网络传输,以达到以后恢复成原来的对象。
2.序列化机制使得对象可以脱离程序的运行而独立存在。

使用场景:
1.所有可在网络上传输的对象都必须是可序列化的,比如RMI(remote method invoke,即远程方法调用),传入的参数或返回的对象都是可序列化的,否则会出错;
2.所有需要保存到磁盘的java对象都必须是可序列化的。通常建议:程序创建的每个JavaBean类都实现Serializeable接口。

疑问点:
序列化版本号serialVersionUID
链接:https://www.cnblogs.com/9dragon/p/10901448.html

问题点

Thread
反射
回调
匿名类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值