Java环境安装
Java工程师都是从JDK环境变量配置开始学习的,下面手把手教大家JDK环境变量配置,5大步骤就可以配置好了。
第一步:电脑右键属性
右击我的电脑–>属性,如下图所示:
第二步:高级系统设置
在打开的系统窗口中,在左侧找到高级系统设置选项并打开,如下图所示:
第三步:环境变量
弹出窗口中点击【环境变量】,如下图所示:
第四步:配置JAVA_HOME
新建系统环境变量,如下图所示:
变量名输入 JAVA_HOME,变量值就是在安装时选择的安装路径,到安装目录把地址复制一下,粘贴过来就好了,然后点击确定。
第五步:配置Path
接下来在系统环境变量中找到Path,选中,然后再点击编辑,在弹出的新窗口中点击新建,输入”%JAVA_HOME%\bin”,点击确定。
下面测试以下:打开CMD命令行窗口,输入”java -version”,如下图所示:
如果出现JDK的版本信息,说明JDK配置环境变量成功了,恭喜你可以开始你的Java之旅了。
Java基本数据类型
Java语言提供了8种基本数据类型,分别是 byte、short、int、long、float、double、boolean、char。
如下图所示:
Java构造函数
Java构造函数 是一种特殊的方法,主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值。
构造方法语法
声明格式:构造方法修饰词列表 类名(方法参数列表)
构造方法修饰词列表:public、protected、private
[修饰符列表] 构造方法名(形式参数列表) {
构造方法体;
}
示例如下:
//手动编写构造函数 public class student{ private int age; private String name; //无参构造函数 public student(){} //全参构造函数 public student(int age, String name){ this.age = age; this.name = name; } //部分参数构造函数 public student(String name){ this.name = name; } }
Java接口
接口英文称作interface,在软件工程中,接口泛指供别人调用的方法或者函数。
在Java中,定一个接口的形式如下:
public interface 接口名 { // 声明变量 // 抽象方法 }
接口无法被实例化,但是可以被实现,用implements表示,必须实现接口内所描述的所有方法。
用现实生活中的一个例子来说明,比如:大家最熟悉的支付场景,现在用的比较多的就是:微信和支付宝。
这样我们就可以先定义好支付的接口,如下所示:
/** * 支付接口 * @author mikechen * */ public interface Pay { public String pay(); }
下面微信和支付宝就可以分别去实现自己的实现类。
/** * 接口详解 * @author mikechen * */ public interface Pay { public String pay(); } /** * 支付宝支付 */ public class AliPay implements Pay { @Override public String pay() { System.out.println("支付宝pay"); return "success"; } } /** * 微信支付 */ public class WeixinPay implements Pay { @Override public String pay() { System.out.println("微信Pay"); return "success"; } } public static void main(String[] args) { /** * 支付宝应用 */ Pay pay = new AliPay(); pay.pay(); /** * 微信支付应用 */ pay = new WeixinPay(); pay.pay(); }
Java数组
Java数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成,其中每一个数据称作一个数组元素。
每个数组元素可以通过一个下标来访问它们,具体如下图所示:
Java常量
ava常量的定义是:用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枚举
Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。
Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。
举类常应用于 switch 语句中:
enum Color
{
RED, GREEN, BLUE;
}
public class MyClass {
public static void main(String[] args) {
Color myVar = Color.BLUE;
switch(myVar) {
case RED:
System.out.println("红色");
break;
case GREEN:
System.out.println("绿色");
break;
case BLUE:
System.out.println("蓝色");
break;
}
}
}
执行以上代码输出结果为:
蓝色
Java switch case
Java Switch语句是多路分支语句,它提供了一种简单的方法,可以用于替换if else。
Switch语法格式如下所示:
switch(表达式){ case 常量值 1: 语句块1 [break;] ...... case 常量值 n: 语句块n [break;] deafault: 语句块 n+1; [break;] }
输入星期数,显示今天的运动项目,周一跑步、周二游泳、 周三慢走、 周四单车、 周五爬山、周六拳击、周日休息。
// switch 进行匹配 switch (str){ case "周一": System.out.println("跑步"); bool = false; break; case "周二": System.out.println("游泳"); bool = false; break; case "周三": System.out.println("慢走"); bool = false; break; case "周四": System.out.println("骑自行车"); bool = false; break; case "周五": System.out.println("爬山"); bool = false; break; case "周六": System.out.println("拳击"); bool = false; break; case "周日": System.out.println("休息"); bool = false; break; default : System.out.println("请按格式输入星期数,如:周一"); break; }
Java三目运算
三目元算符又称为三元运算符也称为条件运算符,目的就是根据条件得到数据结果。
Java三目运算格式:
result = <expression> ? <statement1> : <statement3>;
其中,expression 是一个布尔表达式,当 expression 为真时,执行 statement1, 否则就执行 statement3。
判断年龄,代码如下:
int age = 56; System.out.println(age<18?"未成年":age>55?"老年":"青年");
Java泛型
泛型在java中有很重要的地位,无论是开源框架还是JDK源码都能看到它。
泛型的本质是参数化类型,即给类型指定一个参数,然后在使用时再指定此参数具体的值,那样这个类型就可以在使用时决定了。这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
Java异常
在Java程序设计中,Java异常处理是非常关键和重要的一部分,程序异常处理的好坏直接影响到整个代码质量。
Java 所有的异常都是从Throwable继承而来的,其下有2个子接口,Error和Exception。
1.Error
Error是无法处理的异常,比如OutOfMemoryError,一般发生这种异常,JVM会选择终止程序,因此我们编写程序时不需要关心这类异常。
2.Exception
Exception,是另外一个非常重要的异常子类,比如NullPointerException、IndexOutOfBoundsException、ClassCastException,这些异常是我们可以处理的异常。
3.Error和Exception的区别
异常和错误的区别是,异常是可以被处理的,而错误是没法处理的。
Java面向对象
Java面向对象之所以使程序设计更加完善和强大,主要是因为面向对象具有继承、封装和多态 3 个核心特性。
Java继承
继承性是面向对象的第二大主要特征,继承就是子类继承父类的特征和行为,使得子类对象具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
现实中的例子:狗和猫都是动物,如果将狗、猫作为类,它们可以继承动物类很多的共同特性和行为。
Java封装
Java封装从字面上来理解就是包装的意思,是将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。
使用封装有四大好处:
1、高内聚:封装细节,便于修改内部代码,提高可维护性;
2、低耦合:简化外部调用,便于调用者使用,便于扩展和协作;
3、安全性:提高代码的安全性,隐藏细节实现;
4、复用性:提高代码的复用性。
Java是使用“访问控制符”来控制哪些细节需要封装,类的访问控制符只能是空或者 public,方法和属性的访问控制符有 4 个,分别是 public、 private、protected 和 friendly。
访问控制修饰符的权限,如下表所示:
上图说明了面向对象的封装性,所以我们要利用它们尽可能的让访问权限降到最低,从而提高安全性。
Java多态
多态(Polymorphism)按字面的意思就是“多种状态”,在面向对象语言中,接口的多种不同的实现方式即为多态。
现实中的例子:举一个手机扫码支付的例子,二维码并不知道客户是通过何种方式进行支付,只有通过二维码后才能判断是走哪种支付方式执行对应流程。
/** * 面向对象:多态 * @author mikechen * */ public abstract class Pay { abstract public String pay(); } /** * 支付宝支付 */ public class AliPay extends Pay { @Override public String pay() { System.out.println("支付宝pay"); return "success"; } } /** * 微信支付 */ public class WeixinPay extends Pay { @Override public String pay() { System.out.println("微信Pay"); return "success"; } } public static void main(String[] args) { /** * 支付宝支付多态应用 */ Pay pay = new AliPay(); pay.pay(); /** * 微信支付多态应用 */ pay = new WeixinPay(); pay.pay(); }
Java抽象类
在Java中abstract是抽象的意思,可以修饰类、成员方法,由abstract修饰的方法叫抽象方法,由abstract修饰的类叫抽象类。
Java抽象类的语法
1.抽象类语法
修饰符 abstract class 类名{ }
代码示例:
//抽象类由abstract修饰 public abstract class Student{ }
抽象方法的3个特征如下:
1、抽象方法没有方法体;
2、抽象方法必须存在于抽象类中;
3、子类重写父类时,必须重写父类所有的抽象方法。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》