1.7 1.8
JAVA_HOME;配置JDK的路径变量
Path;是引用JAVA_HOME下bin目录,达到任何地方都可以使用java和javac命令
ClassPath:指JVM运行的目录
四类八种:整数型 byte short int long
小数型 float double
字符型 char
布尔型 boolean
&&:只要两个条件中有一个为false,结果就为false。
||: 只要两个条件中有一个为true,结果就为true。
&:称为单与, 不管左边条件是否为false,右边都将参与运算。
|:称为单或,不管左边条件是否为true,右边都将参与运算。
不参与运算时:前++(–)和后++(–)没有区别。
在参与运算时:前++(–)是先自身+1(-1)再赋值,后++(–)是先赋值再自身+1(-1)。
class ZS{
public static void main(String[] args){
for(int i=1;i<=100;i++){
for(int j =2;j<=i;j++){
if(i% j==0 && i!=j){
break;
}
if(i%j==0&&j==i){
System.out.println(i);
}
}
}
}
}
while:先判断条件为true执行,为false语法错误,一般用于范围较大的循环。
do{}while:先执行后判断,不管条件是否成立,最少执行一次。
break:中断for循环,再循环和switch中使用。
continue:中断本次循环,进入下次循环,只能在循环中使用。
return:直接结束方法。
byte short int char String(1.7版本之后) enum (1.5版本之后)
数据类型[] 数组名 = new 数组类型[数组长度];
数据类型[] 数组名 = new 数据类型[] {数据};
数据类型[] 数组名 = {数据1,数据2,… ,数据n};
class MP{
public static void main(String [] args){
int c=0;
int [] b = {2,55,4,5,55,2,5,1,44,61,25,15,16,31,5};
for(int i = 0;i<=b.length-1;i++){
for(int j = 0; j<b.length-i-1;j++){
if(b[j]>b[j+1]){
c =b[j];
b[j]=b[j+1];
b[j+1] =c;
}
}
}
for(int i = 0 ; i<b.length;i++){
System.out.println(b[i]);
}
}
}
封装:被private修饰的方法或者属性,只能本类访问和使用,如果想让其他类访问,就提供公共的方法。
继承:子类继承父类,可以继承父类非私有属性和方法。
多态:多态指多种形态 多态的实现前提:需要继承关系,需要重写父类的方法,子类对象赋值给父类
static关键字:静态的,被static修饰的方法叫做静态方法(类方法),被static修饰的变量为类变量(成员变量)
被static修饰的方法只能调用static修饰的变量或者方法
普通方法可以调用静态方法和普通方法
被static修饰的方法:可以直接“类名.方法名”调用
被static修饰的变量:可以直接“类名.变量名”调用
用于初始值
this指的的是当前类对象
一般在局部变量(方法内的变量)与成员变量(类下方法外的变量)名字冲突时,使用this来区分,被this调用的变量就是成员变量。
super指的是父类对象
一般在子类与父类名字冲突时,使用super来区分,被super调用的变量就是父类的变量。
重载(overloading):在同一个类中,方法名相同,参数列表不同(参数个数,参数类型,参数顺序),与参数名字无关与返回值无关。
重写(overriding):在子类继承父类中,子类重写父类的方法,什么都不变,变得只有执行体,称为重写【覆盖,重构】
多态的实现前提:需要继承关系,需要重写父类的方法,子类对象赋值给父类
抽象类:抽象类中的方法可能是抽象方法或者是带有方法体的普通方法,有抽象方法的类一定是抽象类。
接口:接口比抽象类更加抽象,可以多实现。接口中只能存储常量,可以存在没有方法体的普通方法或者是抽象方法。
类与接口的关系用:implements
类与类的关系用:extends
接口与接口关系用:extends
类与接口与类:先继承,后实现
类与接口与接口:implements 之间用逗号隔开
在Java中继承只能是单继承,接口的出现弥补了单继承,可以多实现!
Object: equals比较的是内存地址
String: equals比较的是值是否相等(不能比较基本数据类型)
==:比较基本数据类型值是否相等,比较对象的时候比较的是内存地址
equals: 比较内存地址是否相等,通过重写可以比较值是否相等(不能比较基本数据类型)
char c=charAt(int index); 获取制定下标的字符
char[] c=toCharArray(); 将字符串转为字符数组
byte[] b=getBytes(); 将字符串转为byte数组
String:是常量,创建之后不能被修改
StringBuffer:带有缓冲区的可变字符串,是线程安全的,用于多线程
int:是基本数据类型
Integer:是int 的包装类
Error:错误,服务器宕(dang)机,无法修复的错误
Exception:异常,是可以修复的问题
1.编译时异常(Exception):指编译的时候就不让通过
2.运行时异常(RunTimeException):编译可以通过,运行时候报异常
throws:最少抛出一个或一个以上异常
throw:引用自定义异常,只能引用一个异常
final:表示最终的,被final修饰的类不能被继承,被final修饰的方法不能被重写,被final修饰的变量为常量。
finally:跟try{}catch使用,不管是否有异常fianlly都是执行。
进程:就是正在运行的一个应用程序
线程:线程指的就是进程里面可以同时执行的功能
并行: 一块同时执行
并发: 谁先抢占到资源谁先执行
线程实现方式一:继承Thread
1:继承Thread
2:重写Thread中的run方法
.3:将要执行的代码写到run方法中
4:创建线程对象
5:通过start方法启动线程
线程实现方式二:实现Runnable
1:实现Runnable接口
2:重写run方法
3:将要执行的代码放到run方法中
4:创建Thread对象,将Runnable对象传入构造器中、
5:通过start方法启动线程
数组:是一个容器,但是只能存储相同类型的数据,其创建之后长度不可以改变。
集合:是一个容器,可以存储任何类型的数据(不能存储基本数据类型,但是可以自动装箱),创建之后长度可以随意改变。
Vector:是线程安全的,效率低
ArrayList:是线程不安全的效率高
ArrayList:底层是数组实现,查询和修改快
LinkedList:底层是链表结构实现,增和删比较快,查询和修改比较慢
Collection:是一个接口,是List和Set集合的父类接口
Collections:是一个类,Collections是集合的工具包,用来排序,打乱,置换集合数据等操作
List:有序的,允许有重复的元素
Set:无序的,不允许有重复的元素
Map集合的特点:
1.是以键值对的形式存储
2.键重复,值覆盖
3.允许有null键和null值
Hashtable:线程安全的,但是效率低,不允许有null键null值
HashMap:线程不安全的,但是效率高,允许有null键null值
List集合:
1.ArrayList:是线程不安全的,效率高,查询和修改速度快,增加删除慢,底层由数组实现。
2.Vector:是线程安全的,效率低,查询和修改速度快,增加删除慢,底层由数组实现。
3.LinkedList:是线程不安全的,效率高,查询修改慢,增加删除快,底层由链表进行实现。
Set集合:
1.HashSet:底层用哈希表来储存对象
2.LinkedHashSet:链表,不允许有重复的,但是有序。
3.TreeSet:自然排序
Map集合:
1.HashMap:线程不安全的,效率高;允许有null键和null值。
2.LinkedHashMap:底层由链表和哈希值实现,它是Map集合中唯一一个远洋输出的Map集合。
3.TreeMap:具有对键进行自然排序的功能。
4.HashTable:线程安全的,效率低,不允许有null键和null值。
字符流:传输文本速度快,底层使用字符传输,不能传输非文本文件。
字节流:可以传输任意文件,底层使用字节传输。【使用多】
1.字节输入流【读取】(FileInputStream) 字节输出流【写入】(FileOutputStream)
2.缓冲流输入流BufferedInputStream 缓冲输出流BufferedOutputStream
3.字符输入流:读取(FileReader) 字符输出流:写入(FileWriter)
4.字符缓冲输入流:BufferedReader 字符缓冲输出流:BufferedWriter
5.InputStreamReader转换流:字节流转为字符流 OutputStreamWriter是将字符流转为字节流【重点】
序列化:将对象写入到本地
反序列化:从本地读取对象进行重构。