java基本的知识第一天。

我们两清 提交于 2020-02-14 00:33:45

本博客的所有文均为自己学习的笔记,学习用到的资料的内容并非原创,从原作者处学习。

在这里插入图片描述
1个字节是8位 然后的话用byte表示 然后的话K和byte的关系是1024 也就是说k这个单位对应的1024是和byte相比的。

这里可以看到就是各种数据类型 然后的话和我之前看的不一样的地方是:python的话不怎么注重数据类型的 直接就用了。

这里可以看到就是各个占的字节数,key是字节的数量,也就是说:对于byte来说,是1个字节 反而short的话比byte还多了 而int是4个字节 float的话也是四个字节 double是8个。 char的话是两个字节。

这里说的是它的存储,就是存储的空间的大小的问题。short反而比byte要多,单位是字节来的。

这里的话说的是:每个数据类型能够表示的数的最大和最小的问题,至于具体的话为什么说正的数比负的数是少1的关系呢,我个人解释来说如果符号位是0 后面全部填的都是1的话 那么加起来确实就是最大值-1, 但是的话为什么负可以到最小的数呢? 我认为是不是因为10000000这样表示的是:-128的问题呢?这里我还存疑

知道的话每种数据类型表示的最大和最小的数是多少先。

在这里插入图片描述
这里是说:布尔类型是用boolean来表示 然后的话char是字符型的。

在这里插入图片描述

这里的话是说有个var类型 就是可以不写变量类型。

在这里插入图片描述

括号进行类型的强制转换,上课的时候老师好像说的是:C++的话括数据类型也可以 括后面的数字也可以,那么我就认为java括数据类型吧。

在这里插入图片描述

多行字符的话,用三个冒号表示 然后的话用加号连结字符串。 大写的String类型。

在这里插入图片描述

这里的话,说的是:说的创建,是JVM虚拟机创建,JVM虚拟机是什么还不太清楚。

然后的话就是相当于有字符串和指针,然后的话就是相当于String类型创建的是指针就对了。

这里的话说的是:数组类型用 int[] a=new int[5] 这样来弄 然后的话就是动态创建空间的意思吧。length作为它自身的属性 那么就是直接写 然后的话有一些东西是函数,那么就是要 函数名()这样。

在这里插入图片描述

这里是教你怎么去快速打印数组的内容,就是用arrays里面的东西来做。

在这里插入图片描述

这个是直接用Arrays.sort来对数组进行排序。
然后的话这里也说到了数组可以直接就是给赋值的样子了。

在这里插入图片描述

这里的话是说:就是数组名.length 的话,就会得到它的长度了。就是它指针的指向自己要知道。

在这里插入图片描述

这里教会的是:main方法需要专门写一个main的类来做。

对于不让访问的私有的成员,就写一写 set get的东西来访问它们。

这里的话教会你:在这个类里面,如果要写到这个类的私有成员的话,那么就是用this.来访问它,不然的话它的局部变量当然是优先级更高的一方。

这里的话说的是你确实在这个类里面的时候就去用this. 因为告诉你了这个类在这呢。

关于引用类型和基本类型的一些小结:
首先:是数组名、然后的话String都算是引用类型。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

引用类型的改变的话,就记住:你改变的是这个指针指向的东西,还是说你改变的是这个指针所指向的位置,这是不一样的。

在这里插入图片描述

在这里插入图片描述

这里的话:说的是构造方法的多样性,就是说:你这个东西是否具有参数,决定的是:你在构造他的时候,是否立刻告诉它,你这个字段的对应的值是什么,这个就是构造函数的不同。

记住,构造函数是不具有返回值的。

在这里插入图片描述

这里要说的就是:你这里的方法,在声明的时候就把函数体给写了进去的。就是和所说的字段是不一样的,字段的话,那么是声明是声明,定义是定义。

在这里插入图片描述

这里的话说的是方法的重载,也就是说:方法的重载的含义是:就是你方法是同名的,然而的话就是不同的参数来使他进行了改变。 方法的overwrite 覆写的话,说的是不同的类之间的,就是你继承的类 去把原来的方法进行覆。 关键在于:不同类之间的是覆写,然而相同的类不同的方法是重载。

类的继承

记住是用extends关键字进行继承。

在这里插入图片描述

这里是说继承的权限的问题,就是说:protected是可以被子类进行访问的,然而private除了自己之外谁都不可以进行访问。private的私密性最强。

子类的构造函数和父类的构造函数的关系:

(1)父类的构造函数肯定要放在子类的构造函数之前的。
(2)而且父类的构造函数必须放在子类的构造函数的第一行。
规定了内容 也规定了位置。

如果父类里面没有相应的空构造函数,那么必须要在子类里面显式声明调用父类的什么构造函数。
在这里插入图片描述

这里的话,是说:对于字段,或者说是:私有成员而言,super或者不写super都是可以的,就是说:子类自动会继承父类的私有成员或者说字段。
但是构造函数的话就需要有自己的构造规则了。

在这里插入图片描述

反正继承了之后,应该是你这个类做的,就让你这个类做,如果不是你这个类做的,那么就用super扔到父类里面,让父类替你去做。不管说继承的关系有多么复杂的问题。

关于父类的指针能否指向子类的实例,关于子类的指针能否指向父类的实例。

结论:
父类的指针是可以用子类的实例进行实例化的,因为的话:

指针相当于称呼,然后的话实例相当于实例化的东西,实际的对象
E.g:
Person 然后的话Student从person继承。
是Student的实例,也就是说你有一个Student的对象,那么肯定也是人。那么人这个称呼可以放于他身上。

然而 如果说
(1)是Person的实例,不是Student的实例:
那么是人,但是不是student。student这个称呼就不能放在它身上。

(2)是student的实例,但是用Person的指针指向它。就是对于Student这个对象用人的称呼来称呼:
那么Student的称呼当然可以称呼这个Student的对象了。

代码上需要做的东西:

实际的对象 instanceof 类的名字,判断了之后再去进行强制转换,再去进行赋值的选择。

java14里面,如果instanceof了之后 就会自动强制转换

代码例子:
在这里插入图片描述

在这里插入图片描述

这里想说的是:当然可以用Person或者Object的称呼来称呼这个student了。

向下转型,向上转型这些名词的名称可以先不去记忆

在这里插入图片描述

这里的话是说:Student 这个称呼是否能安排在Person所称呼的东西身上。

Person称呼的是Student 那么当然可以强制转换(key:看的是它的内核核心是什么 不是现在怎么称呼它

而记住需要强制转换一下,向下兼容一下。如果是子类的对象 用父类称呼,那倒不用转换。

这里的强制转换的意思是:让你去缩小对它的称呼的意思 扩大称呼是不需要的,因为的话它本身就是一个人嘛。

代码中,instanceof的作用:

在这里插入图片描述

意思就是:左边是指针 右边是类。
那么所做的事情是: 指针所指向的东西到底是不是这个类的东西。

在这里插入图片描述

java14里面,instanceof了之后,已经是强制转换之后的结果了,就不需要再去强制转换了。

在这里插入图片描述
这里的话,把组合关系和继承关系说清楚了。

覆写:
在这里插入图片描述

覆写的意思 就是说子类里面的东西和父类的东西 表面是一样的,但是的话内核不同,所以表面需要 完全一致,就算返回值不一致也不行。 @override的目的:是让编译器去检查 你到底是否在进行override的操作,你到底是不是在进行方法的覆写。

在这里插入图片描述

final关键字的作用:

在这里插入图片描述

这里是告诉你:final修饰类、修饰函数、修饰字段 那么分别起到了什么样的作用。
修饰字段的时候,那么字段被赋值的时间,更好的话,还是在,构造函数中,那么你一有这个实例,才会去给它赋值。

如果是在类里面赋值,感觉就是对于这个类的静态变量了。

抽象方法:

在这里插入图片描述
在这里插入图片描述
(1)只要包含了抽象方法, 这个类就必须写成是抽象的类,如果不把这个类写成是抽象类的话,那么就是错的。
(2)必须把每一个抽象方法都给覆写了,不能说只去覆写自己想要的抽象方法。
(3)就是java和c++不同 就是在声明的时候就必须去写函数体,就是给它以定义了。所以你当场不能定义的话,那么就是抽象的方法。
(4)抽象类里面可以有正常的方法,正常实现的方法它是可以有的。但是的话只要有任何一个抽象方法,它就一定要写成是抽象的类,要声明是abstract。

在这里插入图片描述

在这里插入图片描述
(1)interface和abstract class的关系: 两个条件,所有的函数都是抽象函数,没有字段,那么它就是interface
(2)interface,实现了多继承,就是一个子类可以从多个地方去继承,去implements。其中用逗号去隔开。
接口也可以有extends的操作,一个接口去继承另外一个接口
(3)default的意思是说,在接口里面,这个方法是可以覆写,也可以不覆写的,你想覆写就覆写,不想覆写就不覆写。

在这里插入图片描述

在这里插入图片描述
(1)静态的字段的话,一个改变了,其他的都会改变
(2)类的静态字段的话,最好写成类名.静态字段 最好。
(3)对于接口的字段而言,一定要是static+final两个关键字来进行限制的。接口可以有字段,但是必须是静态的final的字段。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(1)包的存在的目的:为了解决名字相同的冲突问题,也就是说:如果说你的类的(.java)的名字是相同的,那么如何区分是用哪一个.java文件。
(2)包之间是没有父子关系的。
(3)同一个包下面的不同类,是可以相互调用的,就是你直接去使用它。
(4)如果是不同的包 那么就是包名.类名 或者说是:import 了之后 就可以用普通的类名了。
(5)java.lang 包是默认导入的。
在这里插入图片描述
在这里插入图片描述

作用域的问题:
(1)如果一个类定义为public,那么不管是不是同一个包下面的,都可以访问这个类。
(2)如果这个类没写的话,那么是默认的包作用域,只有在同一个包下面的可以访问这个类
(3)对于public应该放在private之前这是比较肯定的,而且嵌套类是可以访问private这也是很好理解的。(只是对于嵌套类的使用,感觉还是不太理解吧,什么时候要使用嵌套类呢?

在这里插入图片描述

这里的三件事都挺重要的,就是如果你需要这个类被其他的包的类来使用的话,那么是写成public的类。
然后的话一个.java文件最多有一个public的类,可以有多个非public的类。public的类必须和.java的文件名相同(这里的理解就是:这个文件对外展示的东西只有一个,但是非对外展示的可以有多个)。
如果要用这个包下面的非public的类的话,那么包名.类名也是很好的方法。

在这里插入图片描述

Jar包和classpath:
在这里插入图片描述
(1)有空格的目录,在放入系统的path里面的时候 要去用双引号括起来。
(2)这里告诉你,JVM在搜索一个类的时候的顺序
(3)这里教会你:在JVM加载的时候再去传入path,但是的话这是不是意味着命令行呢? 在命令行编译这些东西还是很少的吧?

在这里插入图片描述

这里教会你怎么去打包jar包,而且jar包的打包规范是怎样的,jar包就是包含了很多class文件等,它的目的是什么

这里教你如何执行jar包。

模块 Module:

在这里插入图片描述

在这里插入图片描述
这里是说module的话 在结构上,就是多了一个Module_info.java而已,而其他的话就是可以打包jar包

问题是说:Module.java是需要自己去写的吗?还是它自动生成的呢?如果是自动生成,那么并没有什么需要留意的吧?

目前进度记录:

第一天差不多结束了,明天把核心类等等都看一下,网络编程等都看一下
2-3天把java入门的看完吧。

再下一步的话就是去复习数据结构,做力扣题目,同时进行,两步来复习。
之后再引入实战的题目,让自己实战再操练一些。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!