Java定义
作为一种最流行的网络编程语言之一,java语言在当今信息化社会中发挥了重要的作用。
Java语言具有面向对象、跨平台、安全性、多线程等特点,这使得java成为许多应用系统的理想开发语言。
Java基础语法
Java语言提供了8种基本数据类型,如下图所示:
八大基本类型:
- boolean/1
- byte/8
- char/16
- short/16
- int/32
- float/32
- long/64
- double/64
Java常量的定义是:用final修饰的量称为常量,并且在类编译时期载入类的常量池中。
常量举例:
final int COUNT=10;
采用接口(Interface)的中变量默认为static final的特性,示例如下:
public interface ConstantInterface { String SUNDAY = "SUNDAY"; String MONDAY = "MONDAY"; String TUESDAY = "TUESDAY"; String WEDNESDAY = "WEDNESDAY"; String THURSDAY = "THURSDAY"; String FRIDAY = "FRIDAY"; String SATURDAY = "SATURDAY"; }
Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。
Java 枚举类使用 enum 关键字来定义,如下所示:
enum Color { RED, GREEN, BLUE; }
Java Switch语句是多路分支语句,它提供了一种简单的方法,可以用于替换if else。
Switch语法格式如下所示:
switch(表达式){ case 常量值 1: 语句块1 [break;] ...... case 常量值 n: 语句块n [break;] deafault: 语句块 n+1; [break;] }
Java面向对象
Java面向对象之所以使程序设计更加完善和强大,主要是因为面向对象具有继承、封装和多态 3 个核心特性@mikechen
1.封装
Java封装从字面上来理解就是包装的意思,是将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。
使用封装有四大好处:
1、高内聚:封装细节,便于修改内部代码,提高可维护性;
2、低耦合:简化外部调用,便于调用者使用,便于扩展和协作;
3、安全性:提高代码的安全性,隐藏细节实现;
4、复用性:提高代码的复用性。
Java中的封装是使用访问修饰符private 、protected和public实现的。
2.继承
Java继承是面向对象软件技术中的一个概念,继承就是子类继承父类的特征和行为,使得子类对象具有父类的实例域和方法。
Java继承可以降低代码编写的冗余度,提高编程的效率@mikechen
在生活中,我们所理解的“继承”更多的是“子承父业”,就是儿子与父亲之间存在“继承”关系。
现实中的例子:狗和猫都是动物,如果将狗、猫作为类,它们可以继承动物类很多的共同特性和行为。
如下图所示:
3.多态
Java多态是同一个行为具有多个不同表现形式或形态的能力。
多态的实现途径有三种:重写、重载、接口实现,虽然它们的实现方式不一样,但是核心都是:同一行为的不同表现形式。
1)重写
重写,指的是子类对父类方法的重新定义,但是子类方法的参数列表和返回值类型,必须与父类方法一致。
如下所示:
class Chicken{
public void live(String lastword){
System.out.println(lastword);
}
}
class BaiqieChicken extends Chicken{
public void live(String lastword){
System.out.println("这只白切鸡说:");
System.out.println(lastword);
}
}
这里白切鸡类重写了鸡类的live()方法,为什么说是重写呢?因为白切鸡类中live()方法的参数列表和返回值与父类一样,但方法体不一样了。
2)重载
重载,指的是在一个类中有若干个方法名相同,但参数列表不同的情况,返回值可以相同也可以不同的方法定义场景。
如下所示:
class BaiqieChicken extends Chicken{
public void live(){
System.out.println("这是一只会被做成白切鸡的鸡");
}
public void live(String lastword){
System.out.println("这只白切鸡说:");
System.out.println(lastword);
}
}
这里的白切鸡类中的两个live()方法,一个无参一个有参,它们对于白切鸡类的live()方法的描述各不相同,但它们的方法名都是live。
3)接口实现
接口定义方法,方法的实现在继承接口的具体类中定义,也是对同一行为的不同表现形式。
如下所示:
interface Chicken{
public void live();
}
class BaiqieChicken implements Chicken{
public void live(){
System.out.println("这是一只会被做成白切鸡的鸡");
}
}
class ShousiChicken implements Chicken{
public void live(){
System.out.println("这是一只会被做成手撕鸡的鸡");
}
}
从上面我们可以看到,对于鸡接口中的live()方法,白切鸡类和手撕鸡类都有自己对这个方法的独特的定义。
Java泛型
Java泛型在java中有很重要的地位,无论是开源框架还是JDK源码都能看到它。
泛型的本质是参数化类型,即给类型指定一个参数,然后在使用时再指定此参数具体的值,那样这个类型就可以在使用时决定了。这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
更加详细的泛型请查看:Java泛型详解,史上最全图文详解!
会详解:
- 泛型本质
- 为什么使用泛型
- 泛型类
- 泛型接口
- 泛型方法
- 泛型通配符
- 泛型的实现原理
Java异常
异常的英文单词是exception,字面翻译就是“意外、例外”的意思,也就是非正常情况。
在Java程序设计中,Java异常处理是非常关键和重要的一部分,程序异常处理的好坏直接影响到整个代码质量。
Java 所有的异常都是从Throwable继承而来的,其下有2个子接口,Error和Exception。
1.Error
Error是无法处理的异常,比如OutOfMemoryError,一般发生这种异常,JVM会选择终止程序,因此我们编写程序时不需要关心这类异常。
2.Exception
Exception,是另外一个非常重要的异常子类,比如NullPointerException、IndexOutOfBoundsException、ClassCastException,这些异常是我们可以处理的异常。
3.Error和Exception的区别
异常和错误的区别是,异常是可以被处理的,而错误是没法处理的。
异常捕获处理的方法通常有:
- try-catch
- try-catch-finally
- try-finally
- try-with-resource
Java反射
Java反射机制是Java非常重要的动态特性,通过反射不仅可以获取到任何类的成员方法、成员变量、构造方法(Constructors)等信息,还可以动态创建Java类实例等,也是Java的各种框架底层实现的灵魂@mikechen
Java Reflection功能非常强大,比如:
- 获取任意类的名称、package信息、所有属性、方法、注解、类型、类加载器等;
- 获取任意对象的属性,并且能改变对象的属性;
- 调用任意对象的方法;
通过反射我们可以实现动态装配,降低代码的耦合度,动态代理等。
更加详细的Java反射,请查看:Java反射机制全面详解
Java集合
Java集合主要包含:
Java集合List
- ArrayList
- Vector
- LinkedList
Java集合HashSet
- LinkedHashSet
- TreeSet
- Java Set总结
Java集合Queue
- PriorityQueue
- Deque
Java集合Map
- HashMap
- ConcurrentHashMap
- Hashtable
- LinkedHashMap
- TreeMap
更加详细的Java集合详解,请查看:Java集合框架详解(看这篇就够了)
Java网络编程
Java网络编程这篇主要讲了以下几点:
- 计算机网络
- 网络七层模型
- TCP/IP模型
- TCP协议
- UDP协议
- HTTP协议
- Java网络编程
Java注解
Java注解又称Java标注,是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。
Java注解是一个很重要的知识点,掌握好Java注解有利于学习Java开发框架底层实现。
Java注解主要分为:
1、Java自带的标准注解
包括@Override、@Deprecated、@SuppressWarnings等,使用这些注解后编译器就会进行检查。
2、元注解
元注解是用于定义注解的注解,包括@Retention、@Target、@Inherited、@Documented、@Repeatable 等。
元注解也是Java自带的标准注解,只不过用于修饰注解,比较特殊。
3、自定义注解
用户可以根据自己的需求定义注解。
Java注解详细介绍,请查看:Java注解最全详解(超级详细)
Java Lambda表达式
Lambda 表达式是 JDK8 的一个新特性,也被称为闭包,Lambda表达式允许把函数作为一个方法的参数,即行为参数化,函数作为参数传递进方法中。
Java 8 引入的 Lambda表达式的主要作用就是简化代码,写出更优雅的代码。
lambda 表达式的语法格式如下:
- ():左侧部分指定了Lambda表达式需要的所有参数。
- ->:Lambda表达式的操作符或者箭头操作符。
- {}:右侧部分指定了Lambda体,即方法需要实现的内容。
示例,比如:Lambda表达式创建线程
// JDK8 Lambda来创建线程 new Thread(() -> System.out.println("mikechen"));
Java设计模式
设计模式这篇文章主要讲了以下几点:
- 设计模式的目的
- 设计模式常用7大原则
- 设计模式的种类
- 5种创建模式
- 7种结构型模式
- 11种行为型模式
Java多线程
Java多线程这篇文章主要讲了以下几点:
- 线程的生命周期
- 线程的状态控制
- 多线程的5种创建详解
- 线程的3种同步详解
- 线程安全问题详解
- 线程死锁
- 线程上下文切换
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》