title: java入门
date: 2019-07-21 19:50:19
tags: java学习
top: 1
JAVASE学习
1.java入门
More info: Writing //超链接
2.java开发环境配置
第一步是配置本地开发环境,学习最基本的桌面开发,下面以win10为例配置Java开发环境,即:JDK+JRE+idea,安装JDK的时候会默认安装JRE,根据提示安装就可以了。
首先去官网下载适合系统版本的JDK,下载地址:JDK下载-官网选择版本后点击Download,这里下载的JDK8,然后一直下一步,路径默认最好(记住路径后面要用);
[外链图片转存失败(img-xjKkZKy3-1564822527659)(/C:\Users\薛艳春\Desktop\4.jpg “Optional title”)]
JDK安装完成后配置环境变量
1. 右键我的电脑-属性-搞基系统设置-高级-环境变量2.在系统变量栏-新建变量名输入:JAVA_HOME变量值为你的安装路径,我这里填:C:\Program Files\Java\jdk1.8.0_45(这是默认路径,直接复制可能版本不同,文件名不同)然后单击"确定"按钮。3.同样操作我们新建变量名:CLASSPATH变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar(此处可以直接复制粘贴过去用,别忘了最前面的".")4.找到Path选项,这个已经存在(**不要自己创建**),单击"编辑",在最后输入:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin5.现在设置完毕,最后单击"确定"保存所有设置,然后再次单击"确定"退出系统属性。6.测试一下,运行cmd,分别输入:java -version,java,javac可以看到结果说明JDK安装并配置完毕。
3.java基础语法
java基础语法学习详情见菜鸟教程 跟着学习,一定要自己敲,别复制粘贴,多敲代码
4.java流程控制
–
4.1选择结构1: if-else(选择结构学习)
4.1.1 条件语句 - if…else
一个 if 语句包含一个布尔表达式和一条或多条语句。
语法:
if(布尔表达式)
{//如果布尔表达式为true将执行的语句
}
如果布尔表达式的值为 true,则执行 if 语句中的代码块,否则执行 if 语句块后面的代码。
4.1.2 if…else语句
if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。
语法如下:
if…else 的用法如下:if(布尔表达式){//如果布尔表达式的值为true
}else{//如果布尔表达式的值为false
}
4.1.3 if…else if…else 语句
if 语句后面可以跟 else if…else 语句,这种语句可以检测到多种可能的情况。
使用 if,else if,else 语句的时候,需要注意下面几点:
if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后。
if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。
语法
if…else 语法格式如下:
if(布尔表达式 1){//如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){//如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){//如果布尔表达式 3的值为true执行代码
}else {//如果以上布尔表达式都不为true执行代码
}
#####4.1.4 嵌套的 if…else 语句
使用嵌套的 if…else 语句是合法的。也就是说你可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句。
语法
嵌套的 if…else 语法格式如下:
if(布尔表达式 1){如果布尔表达式 1的值为true执行代码if(布尔表达式 2){如果布尔表达式 2的值为true执行代码}
}你可以像 if 语句一样嵌套 else if...else。
下面链接都是来自菜鸟教程
4.2选择结构2 switch case 语句
4.3循环结构 - for, while 及 do…while
5.面向对象
5.1 --[继承]
5.2 –重写(Override)与重载(Overload)
5.3 –多态
多态:(父类引用指向子类对象)
向上转型:Animal am = new Cat(); 从父类的角度思考,只有继承后的子类方法才 可以使用,并且是使用的子类的
向下转型:Cat ct = (Cat)am; 从子类的角度思考,自己有的调用自己的,自己没有 的继承父类的方法来用;
5.4 –抽象类 abstract修饰
1.抽象类是父类,子类必须实现抽象类的抽象方法,子类不想实现父类抽象方法的话,必须把子类设置成抽象方法(用abstract修饰)。也就是:抽象类的子类1.要么是抽象类,要么重写抽象类的所有抽象方法。
2.(不可以用final修饰,需要依赖子类去创建对象(final与abstract是不共存的))
5.5 –封装
####5.6 –接口
接口的方法默认是abstract public的,JDK8以后可以有用default和static修饰的方法并且可以不用子类实现(重写)。
接口定义的成员变量只能是常量,默认用public static final 修饰的。
用子类实例化接口,对象不能调用接口的静态方法.
####5.7 –包package
6.常用API
6.1 API 1.6中英文:百度云连接-点击打开 密码:q7mc
6.2 object类:
类层次结构的根类,所有类都直接或间接继承object类,(自己创建的类也默认继承object)
6.2.3 成员方法:
public int hasCode(); 根据地址值经过一系列运算得到一个int值,hashCode值不同,代表他们
肯定不是同一个对象,hashCode相同,也不一定是相同对象,hashCode方法要配合equls方法使用,来
判断两个对象是否是同一个对象,hashCode方法效率高,运行快。public final Class getClass(); 返回Class对象,字节码对象,通过该对象可以获得类中的所有信息。public String toString(); 返回String类型,默认的实现方式是全类名@地址值,如果不满意,可以重
写String类就重写了object的toString();public bolean equals(Object obj); 1指示其他某个对象是否与此对象“相等”,默认的实现方式是==
==:比较基本数据类型的时候,比较的是值是否相等。:比较的引用类型的时候,比较的是地址值。(引用类型有:Class,数组,abstract)如果不想比较对象的地址值,而且认为如果两个对象的属性值相同,可以重写equals()方法,让他比较的是属性值,一般equals和hashCode是一对,重写的时候一定要重写hashCode(右键-source-geberate equals and hashCode)protected Object clone(); 创建并返回此对象的一个副本,这种克隆机制十分高效,而二者之间完全隔
离。自定义类实现克隆步骤:
A:自定义类实现Cloneable接口,使其具备克隆的能力,否则会产生不支持克隆的异常
B:自定义类中重写Object类的clone()方法,将其写成public修饰的,方便在外部使用。
C:重写clone()方法时通过suoer.clone()调用Object类的clone()方法来得到该对象的副本,并回该副本
(此时会产生一个异常,直接向上抛出,抛出后在main方法里也会产生异常,继续向上抛,会抛给jvm处理)
D:可以在外部类中,使用对象调用clone()方法产生一个object类型的副本,可以通过instanceof来判断该
副本的类型。
E:使用clone产生的副本和原来的地址是不同的
F:使用clone产生的副本,是一个浅拷贝:原本中引用数据类型和副本中的引用数据类型的地址值相同。
6.3 Scanner类(用于获取用户键盘输入)
6.3.1 成员方法
nextXxx(); 获取下一个输入项。Xxx可以是int,Double。nextLine()可以接收到用户输入的回车空格
等字符。hashNextXxx();判断是否还有下一个输入项目其中Xxx可以是int,Double等,如果需要判断是否包含下一
个字符串,可以省略Xxx。默认情况下,Scanner使用回车或者空格作为结束标记。也可以使用useDelimiter()方法进行修改。括号里
加上结束标记符。
6.4 String类
6.4.1 构造方法:
public String();
public String(byte[] bytes);
public String(byte[] bytes,int offset,int length)
public String(char[] value);
public String(char[] value,int offset,int count);
public String(String original);
6.4.2 成员方法
.1 String的内存图
.2 判断功能
boolean equals(Object obg) 比较字符串的内容boolean equalsIgnoreCass(String str) 忽略大小写比较字符串的内容(验证码)boolean contains(String str) 是否包含boolean startsWith(String str) 是否以。。。开头boolean endsWith(String str) 是否以。。。结尾boolean isEmpty() 是否是空串
.3 获取功能
int length(); 获取字符串的长度char charAt(int index) 返回索引所对应的字符int indexOf(int ch) 返回 ch所代表的第一次字符,出现的索引值,如果不存在则返回-1 int indexOf(String str) 返回参数字符串第一次出现的索引值,没有返回-1int indexOf(int ch,int fromIndex) 返回字符从fromIndex之后第一次出现的索引值,不存在返回-1String substring(int start) 字符串的截取,从start到最后,包含startString substring(int start,int end) 字符串截取,从start到end包含start,不包含end。
.4 转换功能
.5 替换功能
.6 StringBuffer (线程安全的可变字符序列)(StringBuilder是线程不安全的)
我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可
以解决。
StringBuffer与String的相互转换:StringBuffer 和String的相互转换:
StringBuffer 转成String:
toString();
String 转StringBuffer:用构造方法
new StringBuffer(String s);
7.集合 –集合框架
7.1 概述:面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,JAVA就提供了集合类
7.2 数组与集合的区别 :
①数组虽然也可以存储对象,但是长度是固定的;集合长度是可变的。
②数组中可以存储基本数据类型,集合只能存储对象。
7.3 特点:集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。
7.4 Java中集合类的关系图(牢记心中)
![“集合类的关系图”](/images/集合类的关系图.png)