javaSE

一.计算机基础
1.历史常识:
计算机之父:冯.诺依曼;
Java之父:詹姆斯.高斯林;
2.DOS命令:
Windows+R:打开DOS窗口;
e:–切换盘符;
dir–展现目录下的文件;
cd–进入目录;
cd.–访问当前目录;
cd…–返回上次目录;
cd/–返回根目录;
cls–清屏;
exit–退出DOS命令行;
mkdir–新建目录;
rmdir–删除目录;
dei–删除文件;
3.eclipse:
IBM公司的开放源码性质的免费编写软件。
4.JDK、JRE、JVM:
1)概述
JVM:Java虚拟机,保证了Java跨平台,是JRE的一部分。
JRE:Java运行时环境,Java程序运行的最小环境,JDK的一部分。
JDK:Java软件开发工具包,Java程序的最小开发工具。
2)JDK配置环境变量:
环境变量-系统变量-新建JAVA_HOME+JDK安装路径;编辑Path添加bin目录的位置;Java -version查看版本;
二.javaSE
1.标识符与关键字:
标识符命名规则:
字母、数字、下划线、$组成
1)不能以数字开头;
2)严格区分大小写;
3)见名知意;
4)不能是Java的关键字;
关键字:
被赋予了特定的意义,53个,保留字const、goto;
2.注释
单行注释://;
多行注释:/**/;
文档注释:/* **/;
3.数据类型:
1)八大基本数据类型:
整数型:
byte–1字节–范围:-128~127;
short–2字节–范围:-3万多~3万多;
int–4字节–范围:-21亿多~21亿多;
long–8字节–范围:-2^63~+2的63次方;
浮点型:
float–4字节–单精度;
double–8字节–双精度;
字符型:
char–2字节–范围:0~65535;
布尔型:
boolean–1字节,true、false
2)引用类型:
指向内存空间的引用,就是地址值。
4.字面值与类型转换
字面值:
整数字面值是int类型;
浮点数的字面值是double类型;
后缀–L、d、f;
计算时提前转换防止计算过程中数据溢出。
类型转换:
1)隐式转换:
小类型转大类型;
2)显示转换:
大类型转类型;
前缀–(byte)、(long)、(char)…
5.运算符
算术运算符:
%取余;
++、–自加自减:符号在前先变化,符号在后先使用;
比较运算符:
==比较是否相等;
!=比较是否不等;
三目运算符:
1?2:3–判断条件1是否成立,成立执行2,否则执行3;
逻辑运算符:
&&双与(短路与);||双或(短路或);
6.变量
局部变量:
定义在方法里–需要初始化–作用域为方法内;
成员变量:
定义在类里方法外–有默认值–作用域为方法内;
7.方法
1)分类
普通方法:
语法:修饰符+返回值+方法名+(方法参数)+方法体;
作用:实现具体功能;
构造方法:
语法:修饰符+类名+(方法参数)+方法体;
作用:实例化对象;
类型:
无参构造、含参构造;
主题事项:系统默认生成一个无参构造;当定义含参构造时,默认的无参构造会被替代。
2)方法的重写:(行为的多态)
子类继承父类的方法后,修改方法的内容;
3)方法的重载:(对象的多态)
在同一个类里,定义多个方法名相同方法参数不同的同名方法。
8.数组
1)概述
静态初始化:数据类型+[ ]+数组名=new+数据类型+[ ]{1,2,…};
动态初始化:数据类型+[ ]+数组名=new+数据类型+[数组长度];
2)数组工具类Arrays
sort()–排序;
copyOf(原数组,新数组长度)–复制数组;
toString()–转成字符串;
9.分支结构:
1)if语句
单分支:if(判断条件){成立执行};
多分支:if(判断条件){成立执行}else{不成立执行};
嵌套分支:if(判断条件1){成立1执行}else if(判断条件2){成立2执行}…else{都不成立执行};
2)switch…case语句
jdk1.7以后添加了String类型的数据;
switch(变量){
case值:语句;
case值:语句;
case值:语句;
case值:语句;
default:语句;
}
从成立的case贯穿所有case及default;
10.循环结构
1)while循环:
while(判断条件){循环体};
特点:只需要判断条件,先判断再执行;
2)do…while循环:
do{循环体}while(判断条件);
特点:只需要判断条件,先执行再判断;
3)for循环
for(开始条件;循环条件;更改条件){循环体};
11.内存结构
栈内存:存储局部变量,当数据使用完,所占空间会自动释放。
堆内存:数组和对象,通过new建立的实例都存放在堆内存中。
三.面向对象
1.概述
1)特点:
封装、继承、多态
2.封装
1)概述
private关键字修饰;只能在本类中中直接调用;提高代码的安全性;
2)封装方法
另外设置公共的方法去调用被封装的方法;
3)封装变量;
设置公共的getXxx()和setXxx()方法用于获取和设置被封装变量的值。
3.代码块
1)构造代码块
(1)作用:给对象进行初始化;
(2)特点:new时触发,定义在类里方法外,优于构造方法执行;
2)局部代码块
特点:定义在方法里;
作用:限定变量的作用范围;
3)静态代码块
特点:
只执行一次;
优于构造代码块执行;
4.this关键字
1)概述:
调用本类的资源;
成员变量名与局部变量名相同时,构造方法间的调用不能省略this;
构造方法间调用时,必须是第一条语句;
不能行成死循环;
5.super关键字
调用父类的资源;
构造方法间调用时,必须是第一条语句;
6.继承
1)概述:
子类继承父类非私有的属性和方法并能扩展新的资源;
子类只能单根继承一个父类;
父类可以有多个子类;
final修饰的类不能被继承;
2)父类:
提取子类的所有共性的代码/提高了父类里代码的复用性;
3)子类
(1)子类的构造方法:
子类构造方法中,第一行默认是super();
(2)变量和方法:
调用时先看自己有没有再看父类有没有;
7.static关键字
1)特点
随着类的加载而加载;
全局共享;
类名直接调用;
静态资源不能被重写;
静态方法只能调用静态资源;
静态方法中不能使用this,super关键字;
8.final关键字
final修饰的类不能被继承;
final修饰的方法不能被重写;
final修饰的变量是一个常量;
9.多态
1)概述
父类引用指向子类对象;
编译看左边,运行看右边;
只能使用父类的功能;
2)优点:
统一了调用的标准;
提高了代码的复用性;
3)使用子类的特有功能:
创建子类对象;
向下造型;
10.异常
1)概述
顶级父类Throwable–Error/Exception–运行时异常/非运行时异常;
2)处理方案:
(1)Throws Exception
作用在方法声明上,抛出异常,可能有也可能没有异常;
(2)Throw Exception
作用在方法里,明确抛出异常,一定有异常;
(3) try{
可能出现异常的代码
} catch(异常类型 异常名)
{异常处理代码
} finally
{释放资源 }
11.抽象类
abstract关键字修饰;
不能被实例化;
包含抽象方法,也可以有普通方法;
有构造方法;
可以有变量和常量;
12.接口
1)概述
interface关键字;
成员变量为常量,默认修饰 public static final;
没有构造方法;
方法都是抽象方法,,默认修饰 public abstract ,JDK1.8以后添加了静态方法和默认方法;
2)关系
接口与接口之间为继承,可以多继承;
类与接口之间为实现implement,可以多实现;(重写所有抽象方法)
13.Object工具类
1)所有类的超类;
2)方法:
(1)void finalize()
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法;
(2)String toString()
返回对象的字符串表示;
(3)boolean equals(Object obj)
用于比较两个对象的地址值是否相同;
14.String工具类
方法:
charAt(int index)
返回指定索引处的 char 值;
concat(String str)
将指定字符串连接到此字符串的结尾;
contains(CharSequence s)
当且仅当此字符串包含指定的 char 值序列时,返回 true。
startsWith(String prefix)
测试此字符串是否以指定的前缀开始;
endsWith(String suffix)
测试此字符串是否以指定的后缀结束。
equals(Object anObject)
将此字符串与指定的对象比较。(已重写,比较值)
getBytes()
使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。
lastIndexOf(String str)
返回指定子字符串在此字符串中最右边出现处的索引。
isEmpty()
当且仅当 length() 为 0 时返回 true。
length()
返回此字符串的长度。
matches(String regex)
告知此字符串是否匹配给定的正则表达式;
replace(char oldChar, char newChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的;
split(String regex)
根据给定正则表达式的匹配拆分此字符串;
substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。(顾头不顾尾)
toCharArray()
将此字符串转换为一个新的字符数组;
toLowerCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为小写;
toUpperCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为大写;
trim()
返回字符串的副本,忽略前导空白和尾部空白;
15.StringBuder/StringBuffer
1)概述
专门用来解决 字符串拼接的;
2)方法
append()拼接;
delete() 删除;
insert()插入;
replace () 替代;
reverse()翻转;

16.日期工具类Date
方法:
getDate() --今天是几号;
getDay() --今天礼拜几;
getHours() --现在几时;
getMinutes() --现在几分;
getMonth()+1 --现在几月;
getSeconds() --现在几秒;
getTime() --自1970.1.1零点
getYear()+1900 --自1900年算;
toLocaleString() --当前完整的时间;
17.SimpleDateFormat
1)构造方法
new SimpleDateFormat(String pattern);
指明日期格式–new SimpleDateFormat(“yyyy-MM-dd”);
18.BigDecimal/BigInteger
1)概述
BigDecimal – 专门解决小数运算不精确的问题;
BigInteger – 专门解决超大的整数运算;
2)方法
add()–加法;
subtract()–减法;
multiply()–乘法;
divide()–除法;
divide(x,3,BigDecimal.ROUND_HALF_UP) --除以x,保留三位小数,四舍五入;
19.包装类
1)概述
包装类 就是为 基本类型 提供丰富的方法;
基本类型:byte short int long float double char boolean
包装类型:Byte Short Integer Long Float Double Character Boolean
2)Integer方法
valueOf()----String 转Integer;—(static)
intValue()----Integer转int;
getInteger()----int转Integer;----(static)
四.IO
1.概述
字符流----只能传输TXT文件;
字节流----可以传输各种类型的文件;
结尾单词一般为stream;
2.File文件流
1)概述
File file=new File(“路径名”);
2)方法
length();----文件字节数;
exists();----是否存在;
isFile();-----是否是文件;
isDirectory();------是否是文件夹;
getName();------获取文件名/文件夹名;
getParent();------获取父文件夹的路径;
getAbsolutePath();------获取文件的完整路径;
createNewFile();-----创建新文件;
mkdir();-----创建文件夹;
mkdirs();-----创建多个文件夹;
delete();-----删除空文件夹/文件;
list();----返回文件名;
listFiles();----返回文件;
3.字节读取流
InputStream:
1)概述:
抽象类,没有构造方法;
2)方法
read();----读取字节;返回ascll码的int值,若为空返回-1;
close();----关闭流;
3)子类:
FileInputStream/BufferedInputStream
(1)构造方法
FileInputStream file=new FileInputStream(“完整路径名”);
BufferedInputStream buf=new BufferedInputStream( FileInputStream );
4.字节写出流
OutputStream:
1)概述:
抽象类,没有构造方法;
2)方法
void write(byte[] b)----将字节从指定的 byte 数组写入此输出流;
flush()----输出数据;
close()----关闭流;
3)子类
FileOutputStream/BufferedOutputStream
(1)构造方法
FileOutputStream file=new FileOutputStream(“完整路径名”);
BufferedOutputStream buf=new BufferedOutputStream( FileOutputStream );
5.补充
BufferedInputStream高效在于底层创建了一个大小为8192的数组;
6.泛型
<>表示;
泛型的数据类型只能是引用类型;
好处:限定了数据类型;
五.集合
1.概述
集合里可以存放不同类型的数据;
Collection-List/Set–ArrayList/LinkedList,HashSet/TreeSet;
Map-HashMap/TreeMap;
2.Collection接口
boolean add(E e)–添加元素;
boolean addAll(Collection c)–把小集合添加到大集合中 。
boolean contains(Object o)-- 如果此 collection 包含指定的元素,则返回 true。
boolean isEmpty() --如果此 collection 没有元素,则返回 true。
Iterator iterator()–返回在此 collection 的元素上进行迭代的迭代器。
boolean remove(Object o) --从此 collection 中移除指定元素的单个实例。
int size()–返回此 collection 中的元素数。
Objec[] toArray()–返回对象数组
3.List接口
1)概述
数据是有序的;
允许重复;
允许null;
有下标;
2)方法
ListIterator listIterator()—返回此列表元素的列表迭代器;
void add(下标值,元素)–在列表的指定位置插入指定元素;
boolean addAll(下标值,Collection对象)–将指定 collection 中的所有元素都插入到列表中的指定位置;
List subList(下标值1, 下标值2)–顾头不顾尾截取;
E get(下标值)–返回列表中指定位置的元素;
int indexOf(Object o)–返回此列表中第一次出现的指定元素的索引,如果此列表不包含该元素,则返回 -1;
4.ArrayList
1)概述
底层为初始容量为10的数组;
1.5倍扩容;
查询快,增删慢;
5.LinkedList
1)概述
底层为双向链表;
增删快,查询慢;
2)方法
void addFirst(E e)/boolean offerFirst(E e)–将指定元素插入此列表的开头;
void addLast(E e)/boolean offer(E e)–将指定元素插入此列表的结尾;
E getFirst()–返回此列表的第一个元素;
E getLast()–返回此列表的最后一个元素;
E removeFirst()/E pollFirst()–获取并移除此列表的第一个元素;如果此列表为空,则返回 null;
E removeLast()/E pollLast()–获取并移除此列表的最后一个元素;如果此列表为空,则返回 null;
6.Set
不能重复;
只有一个null;
无序没有下标;
7.HashSet
本质是HashMap,底层是Hash表,是数组加链表结构,数组大小默认为16,加载因子为0.75;
8.TreeSet
底层是红黑树,便于查询;
9.Collections工具类
Collections.sort(List<> list)–根据元素的自然顺序 对指定列表按升序进行排序。
Collections.max()–根据元素的自然顺序,返回给定 collection 的最大元素。
Collections.min()–根据元素的自然顺序 返回给定 collection 的最小元素。
Collections.swap(List,i,j)–在指定列表的指定位置处交换元素。
10.Map接口
1)概述
数据以键值对的形式存在Map<K,V>;
键不能重复,值可以重复;
没有下标无序存放;
初始容量是16,默认的加载因子是0.75;
2)方法
put(K,V)—添加一组映射;
void clear() --从此映射中移除所有映射关系;
boolean containsKey(Object key)–判断是否含有某个K值;
boolean containsValue(Object Value)–判断是否含有某个value值;
V get(Object key)—根据Key值获取Value值;
int size()–返回集合中的映射数量;
remove(K)—根据K值移除映射;
11.HashMap
1)概述
底层为数组加链表,容量16,加载因子为0.75;
2)HashMap的存储过程
拿着key值去算HashCode,拿着HashCode去找存储位置,若存储位置为空则直接存入映射;若存储位置不为空,如果key值相同则覆盖;若key值不同则形成链表;
3)HashMap与HashTable的区别
HashMap中可以有null值null键,HashTable中没有null值null键;
HashMap是线程不安全的,HashTable是线程安全的;
HashTable不建议使用,单线程时用HashMap代替,多线程时用ConcurrentHashMap来代替;
六.多线程
1.进程
进程就是正在执行的程序;·
一个程序的执行至少有一个进程,一个进程中至少有一个线程;
2.线程
1)概述
操作系统调度的最小单位;
线程的状态:新建状态–可运行状态–运行状态–阻塞状态–终止状态;
并发和并行:并发是多个线程抢占一个cpu;并行是每个资源分配一个cpu;
2)实现多线程
创建多个thread对象,调用start()开启线程;
继承Thread类,重写run(),访问当前线程可以直接用this;
实现Runnable接口,重写run(),访问当前线程用Thread.getCurrentThread();
3)线程池
ExecutorService pool= Excutors.newFixedThreadPool(数量);
pool.execute(new myThread());
线程执行完操作后,不会被释放,会回到线程池中等待下次执行;
4)阻塞
wait()----属于Object类,释放对象锁,notify()唤醒;
sleep()-----属于Thread类,不会释放锁对象,线程阻塞,让出cpu,但保持监控状态;
join()----进入异步线程,异步线程执行完后才继续运行原线程;
yield()----属于Thread类,不会释放锁对象,不会阻塞线程;
3.同步锁
1)概述
synchronized(锁对象){需要同步的代码};
降低执行效率,保证线程安全;
可以锁方法也可以锁代码块;
锁方法时,如果是静态方法自动分配锁对象this;
2)悲观锁与乐观锁
悲观锁:先锁后访问,认为线程拿到数据后一定会修改,当一个线程执行完被锁的资源后再把资源转让给其他线程;
乐观锁:先访问再判断若未被修改则提交,若已被修改则回滚;
4.设计模式
单例模式
只创建一个对象,节约资源;
1)饿汉式
直接创建一个对象;
class A{
private A(){};
static private A a=new A();
static public A getA(){
returen a;
}
}
2)懒汉式
用时才创建对象;
class B{
private B(){};
static B b;
synchronized static public B getB(){
if(b==null){
b=new B();
}
return B;
}
}
5.注解
1)概述
JDK注解–@Override;元注解—@Target,@Retention;自定义注解
2)@Target
ElementType.TYPE–用在类上;
ElementType.METHOD —用在方法上;
ElementType.FIELD ----用在变量上;
3)@Retention
RetentionPolicy.SOURCE—源文件中有效;0
RetentionPolicy.Class—Class文件中有效;
RetentionPolicy.RUNTIME—运行时有效;
4)自定义注解
@Target({ElementType.METHOD})–定义位置;
@Retention(RetentionPolicy.SOURCE)–定义生命周期;
@interface Test{
int age() default 0;—设置属性和默认值
String value() ;----设置属性,没有默认值必须传入参数;
}
@Test(age,value=" ")----使用注解;
6.反射
1)概述
JVM得到class对象后进行反编译获取类的全部信息;
类名.class;
Class.forName(“类的全路径”);
new 对象.getClass();
2)方法
getName()----获取完整类名;
getPackage()—获取包;
getSimpleName()----获取类名;
getFields()-----获取全部变量;
getField(变量名)----获取变量;
getConstructors()----获取全部构造方法;
getConstructor(参数类型列表)—获取构造方法;
getMethods()----获取全部方法;
getMethod(方法名,参数类型列表)—获取方法;
newInstance()----执行无参构造(返回Object对象);
newInstance(参数)-----执行含参构造(返回Object对象);
getParameterTypes()—获取参数类型构成的Class数组;
3)创建对象,修改变量,调用方法
(类)Object—将获取的Object对象向下转型;
field.set(Object o,值);
field.get(Object o);
method.invoke(Object o,参数);
4)暴力反射
(1)所有方法添加Declare,如getDeclareMethod();
(2)设置权限
field.setAccessible(true);
method.setAccessible(true);
7.内部类
将一个类放在另一个类里;
安全性高、节省内存;
成员内部类—类里方法外;
局部内部类—方法里;
匿名内部类—方法里,配合匿名对象使用–优化了设计结构;
8.Socket编程
1)服务器
ServerSocket server=new ServerSocket(端口);—创建服务器;
Socket socket=server.accept();–接受客户端;
InputStream in=socket.getInputStream();
OutputStream out=socket.getOutputStream();
2)客户端
Socket socket=new Socket(IP,端口号);
OutputStream out = socket.getOutputStream();
out.write(“hello”.getBytes());—字节流不能写出字符串;
9.正则表达式
regex;
约束字符串的规则;
String.matches(String regex)—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值