前端Vue学习完了后,开始后台的学习了。必不可少的知识点当然要从Java开始讲起,老师用了7天的时间把知识点快速的过了一遍,现在通过这个平台记录一下自己的学习笔记与成果。 一方面为了加深自己的印象为之后学Springboot做铺垫。另一方面呢也分享给正在学习Java的小伙伴,一起学习巩固一下知识点加深印象吧。
随着日益竞争激烈的当代社会,扎实与基础的力量是无穷的。无论什么样的工作岗位都需要雄厚的功底,只有掌握良好的基础才能在自己坚持的这条路上走的长远。
提示:以下是本篇文章正文内容,下面案例可供参考
1.Java语言是易学的,java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和实用Java。 2.Java语言是强制面向对象的,Java语言提供类、接口、和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements). 3.Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,暴扣URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 4.Java语言是健壮的;Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。 5.Java语言是安全的;Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码攻击。如:安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查。 6.Java语言是体系结构中立的;Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class文件),然后可以在实现这个Java的任何系统中运行。 7.Java语言是解释型的;如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java的任何系统的解释器中运行。 8.Java是性能略高的;与那些解释型的高级脚本语言相比Java的性能还是较优的。 9.Java语言是原生支持多线程的;在Java语言中,县城是一种特殊的对象,他必须由Thread类或其子孙类来创建。
特点一: 面向对象
1》两个基本概念:类、对象 2》三大特性:封装、继承、多态
特点二: 健壮性
1》吸收了C /C++语言的有点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制
特点三: 跨平台性
1》跨平台性:通过Java语言编写的应用程序在不同的系统平台上都可以运行。用一句英文可以这样表示,“Write once,Run Anywhere” —写一次,到处运行。 2》原理:只要在需要运行Java应用程序的操作系统上,先安装一个Java虚拟机 (JVM Java Virtual Machine) 即可。由JVM类负责Java程序在该系统中运行。
3.1.API(Application Programming interface ,应用程序编程接口)是Java提供的基本编程接口。 3.2.Java语言提供了大量的基础类,因此Oracle也为这些基础类提供了相应的API文档,用于告诉开发者如何实用这些类,以及这些类里包含的方法。 3.3.下载API: API官方文档 http://www.oracle.com/technetwork/java/javase/downloads/index.html
关键字的定义特点: 定义: 被Java语言赋予了特殊含义,用用专门用途的字符串(单词) 特点: 关键字中所有字母都为小写
1》用于定义的数据类型的关键字:class、interface、enum、byte、short、int、long、float、double、char、boolean、void. 2》用于定义数据类型值的关键字:true、false、null 3》用于定义流程控制的关键字:if、else、switch、case、default、while、do、for、break、continue、return. 4》用于定义访问权限修饰符的关键字:private protected public 5》用于定类、函数、变量修饰符的关键字:abstract、final、static、synchronized. 6》用于定义类与类之间的关键字:extends、implements 7》用于定义建立实例以及引用实例,判断实例的关键字:new、this、super、instanceof. 8》用于异常处理的关键字:try、catch、finally、throw、throws. 9》用于包的关键字:package import. 10》其他修饰符关键字:native、strictfp、transient、volatile、assert.
Java保留字:现有Java版本尚未实用,但以后版本可能会作为关键字使用。自己命名标记符时要避免使用这些保留字
例如: byValue、cast、future、generic、inner、operator、outer、rest、var、goto、const.
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
分类:
算术运算符赋值运算符比较运算符(关系运算符)逻辑运算符三元运算符注意:
逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
“&”和“&&”的区别: 1.单&时,左边无论真假,右边都进行运算; 2.双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
顺序结构: 程序从上到下逐行地执行,中间没有任何判断和跳转。 分支结构:根据条件,选择性地执行某段代码。有if…else和switch两种分支语句。 循环结构:根据循环条件,重复性的执行某段代码.while、do…while、for三种循环语句。注:JDK1.5开始提供了foreach循环,方便的遍历集合、数组元素。
注意:
switch(表达式)中表达式的返回值必须是下述几种类型之一:byte,short,char,int,枚举,String;case子句中的值必须是常量,且所有case子句中的值应是不同的;default子句是可任选的,当没有匹配的case时,执行default;break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾。应用举例:100以内的所有偶数以及和
public class ForLoop { public static void main(String args[]){ int result = 0; for(int i=1; i<=100; i++) { result += i; } System.out.println("result=" + result); } }声明方式: 例如:
int a[]; int[] a1; double b[]; Mydate[] c; //对象数组注意:Java语言中声明数组时不能指定其长度(数组中元素的数)。
例如: int a[5]; //非法栗如:
int[] arr = new int[3]; arr[0] = 3; arr[1] = 9; arr[2] = 8; //再比如 MyDate dates[];// MyData dates[]; dates = new MyDate[3]; dates[0] = new MyDate(22, 7, 1964); dates[1] = new MyDate(1, 1, 2000); dates[2] = new MyDate(22, 12, 1964); 静态初始化:在定义数组的同时就为数组元素分配空间并赋值。栗如:
int a[] = new int[]{ 3, 9, 8}; int[] a = {3,9,8}; //再比如 MyDate dates[] = { new MyDate(22, 7, 1964), new MyDate(1, 1, 2000), new MyDate(22, 12, 1964) }数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。 例如:
public class Test { public static void main(String argv[]){ int a[]= new int[5]; System.out.println(a[3]); //a[3]的默认值为0 } }注意: 1.对于基本数据类型而言,默认初始化值各有不同。 2.对于引用数据类型而言,默然初始化为null(注意与0不同!)
二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为。面向对象,将功能封装进对象,强调具备了功能的对象。
面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。
举个栗子: 紧接着讲到的是类与类之间的关系
程序员从执行者转化成了指挥者。
完成需求时: 2.1.先去找具有所需功能的对象来用。 2.2.如果该对象不存在,那么创建一个具有所需功能的对象。 2.3这样简化开发并提高复用。
类(class)和对象(object)是面向对象的核心概念。 3.1.类是对一类事物描述,是抽象的、概念上的定义对象是实际存在的该类事物的每个个体,因而也称实例(instance)。 3.2. “万事万物皆对象”
同样举栗子:
概念:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。 重载的特点:与返回值类型无关,只看参数列表,且参数列表必须不同。(参数个数或参数类型)。调用时,根据方法参数列表的不同来区别。
构造方法的特征: 1.它具有与类相同的名称。 2.它不声明返回值类型。(与声明为void不同)。 3.不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值。
构造器的作用:创建对象;给对象进行初始化. 1.如:Order o = new Order(); Person p = new Person(Peter,15); 2.如同我们规定每个“人”一出生就必须先洗澡,我们就可以在“人”的构造方法中加入完成“洗澡”的程序代码,于是每个“人”一出生就会自动完成“洗澡”,程序就不必再在每个人刚出生时一个一个地告诉他们要“洗澡”了。
3.根据参数不同,构造方法可以分为一下两类: -》隐式无参构造方法(系统默认提供)。 -》显式定义一个或多个构造方法(无参、有参)。 注意: -》Java语言中,每个类都至少有一个构造方法。 -》默认构造方法的修饰符与所属类的修饰符一致。 -》一旦显式定义了构造方法,则系统不再提供默认构造方法 -》一个类可以创建多个重载的构造器 -》父类的构造方法不可被子类继承
this是什么?
在java中,它的作用和其词和接近。 1.它在方法内部使用,即这个方法所属对象的引用; 2.它在构造方法的内部使用,表示改构造器正在初始化的对象。
this表示当前对象,可以调用类的属性、方法和构造方法。
使用this,调用属性、方法示例代码:
class Person{ // 定义Person类 private String name ; private int age ; public Person(String name,int age){ this.name = name ; this.age = age ; } public void getInfo(){ System.out.println("姓名:" + name) ; this.speak(); } public void speak(){ System.out.println(“年龄:” + this.age); }注意: 1.当形参与成员变量重名时,如果在方法内部需要使用成员变量,必须添加this来表明该变量时类成员。 2. 在任意方法内,如果使用当前类的成员变量或成员方法可以在其前面添加this,增强程序的阅读性.
使用this调用本类的构造器:
class Person{ // 定义Person类 private String name ; private int age ; public Person(){ // 无参构造 System.out.println("新对象实例化") ; } public Person(String name){ this(); // 调用本类中的无参构造方法 this.name = name ; } public Person(String name,int age){ this(name) ; // 调用有一个参数的构造方法 this.age = age; } public String getInfo(){ return "姓名:" + name + ",年龄:" + age ; } }注意:this可以作为一个类中,构造器相互调用的特殊格式。
在Java类中使用super来调用父类中的指定操作:
super可用于访问父类中定义的属性。super可用于调用父类中定义的成员方法super可用于在子类构造方法中调用父类的构造器。注意:
尤其当子父类出现同名成员时,可以用super进行区分。super的追溯不仅限于直接父类。super和this的用法相像,this代表本类对象的引用,super代表父类的内存空间的标识。示例代码:
class Person { protected String name="张三"; protected int age; public String getInfo() { return "Name: " + name + "\nage: " + age; } } class Student extends Person { protected String name = "李四"; private String school = "New Oriental"; public String getSchool(){ return school; } public String getInfo() { return super.getInfo() +"\nschool: " +school; } } public class TestStudent{ public static void main(String[] args){ Student st = new Student(); System.out.println(st.getInfo()); } }1.注意:
有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果。接口(interface)是抽象方法和常量值的定义的集合。从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。实现接口类:class SubClass implements InterfaceA{ }一个类可以实现多个接口,接口也可以继承其它接口。2.接口的特点:
用interface来定义。接口中的所有成员变量都默认是由public static final修饰的。接口中的所有方法都默认是由public abstract修饰的。接口没有构造器。接口采用多继承机制。接口应用举例:
代码举例:
interface MyInterface{ String s=“MyInterface”; public void absM1(); } interface SubInterface extends MyInterface{ public void absM2(); } public class SubAdapter implements SubInterface{ public void absM1(){System.out.println(“absM1”);} public void absM2(){System.out.println(“absM2”);} }概述:Java 集合可分为 Collection 和 Map 两种体系。
Collection接口: 1.Set:元素无序、不可重复的集合 —类似高中的“集合”。 2.List:元素有序,可重复的集合 —”动态”数组
Map接口:具有映射关系“key-value对”的集合 —类似于高中的“函数” y = f(x) (x1,y1) (x2,y2)
典型代码:
Iterator i = coll.iterator(); while(i.hasNext()){ System.out.println(i.next()); } Iterator iterator = coll.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next()); }TreeMap存储 Key-Value 对时,需要根据 key-value 对进行排序。TreeMap 可以保证所有的 Key-Value 对处于有序状态。
TreeMap 的 Key 的排序: 1.自然排序:TreeMap 的所有的 Key 必须实现 Comparable 接口,而且所有的 Key 应该是同一个类的对象,否则将会抛出异常错误 ClasssCastException。 2.定制排序:创建 TreeMap 时,传入一个 Comparator 对象,该对象负责对 TreeMap 中的所有 key 进行排序。此时不需要 Map 的 Key 实现 Comparable 接口。
还需注意:
TreeMap判断两个key相等的标准:两个key通过compareTo()方法或者compare()方法返回0。若使用自定义类作为TreeMap的key**,所属类需要重写equals()和hashCode()方法,且equals()方法返回true时,compareTo()方法应返回0。**好了,Java总结的知识点大概就是这些了,鄙人才疏学浅,文笔与编辑能力有限,错别字与一些结构的优化方面的错误在所难免。还有没有写出来的一些知识点望大佬指点与谅解,如果文章对你有帮助的话,引用B站的话语。别忘了给我一键三连哟谢谢啦(^U^)ノYO
只有把抱怨环境的心情,化为上进的力量,才是成功的保证。——罗曼·罗兰
