JAVA学习总结--思想构架

 

 

 

 

 

JAVA语言学习总结

一、环境搭建

       1.java概述

java是SUN公司1995年推出的一门高级编程语言;是一种面向Internet的编程语言;已经成为Web应用程序的首选开发语言;是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。

       2.JRE(环境)和JDK(工具)配置

       ①下载网址

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

       ②安装教程

https://jingyan.baidu.com/article/3c343ff70bc6ea0d377963df.html

       3.path配置

       ①我的电脑--属性--高级--环境变量

l  编辑path环境变量,在变量值开始处加上java工具所在目录,后面用 “ ; ”和其他值分隔开即可。

l  打开DOS命令行,任意目录下敲入javac。

l  如果出现javac 的参数信息,配置成功。

②为了不因为jdk的目录或者目录名称的改变,而不断更改path的值,而导致对path变量值的误操作,可以通过以下技巧完成。

l  新创建一个环境变量 JAVA_HOME 记录住jdk的目录。

l  在path中通过%%动态的获取JAVA_HOME的值即可。

l  JAVA_HOME=F:\jdk1.6.0_01

l  path=%JAVA_HOME%\bin;%path%

l  %path%:动态获取path环境变量的值。

l  %JAVA_HOME%:动态获取名称为JAVA_HOME环境变量的值。

二、JAVA语言基础

       1关键字

2.常量变量

3.运算符

l  算术运算符+  -  *  /  %  ++  --

l  赋值运算符=  +=  -=  *=  /=  %=

l  比较运算符==  !=  < >  <=  >=

l  逻辑运算符& I  ^(异或)  ! &&  II

l  位运算符<< >>  >>>  &  ^  I  ~(取反)

l  三元运算符()?_  :  _

4.流程控制

①判断结构if

②选择机构switch

③循环结构while

Note:break语句:只作用于switch语句;

Continue语句:只作用于循环结构(本次循环结束,继续下次循环)

       5.函数

修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...)

              {执行语句;

              return 返回值;

              }


       6.数组

①一维数组

 ②二维数组             int[][]arr = new int[3][2];

三、面向对象

1封装

①private关键字:提高对数据访问的安全性。

a将成员变量私有化;

b对外提供对应的set ,get方法对其进行访问。

②构造函数:对象创建初始化。

a创建:函数名与类名相同

Note:不用定义返回值类型;

没有具体的返回值。

b调用:

eg:Person p = new Person(“lisi”,20)

③this关键字:代表所在函数的对象。

④static关键字:

 

静态变量

成员变量

范围

对象

调用

类或对象

对象

加载

随着类

随着对象

存载

方法区

堆内存

 

 

2继承(Extends)

①super关键字:代表父类的内存空间的标识。

②final关键字:最终化,打破封装性,数据固定不变。

③抽象类:无足够信息描述,即为抽象。

创建:abstract class/void 函数( ).

       Note:不可共存关键字

final

final不派生类,abstract必须有子类

private

Private不能覆盖,abstract子类方法必须覆盖抽象方法

Static

Static调用无意义(作用),abstract调用无意义

④接口(interface):抽象类中方法全为抽象,用接口。

       应用:多实现class C implements A B

                    多继承interface C extends A B

                 父类功能扩展:class C extends A implements B

       Notes:a 定义变量必须使用public static final(不可创建对象)

b 定义方法必须使用public abstract(子类必须全覆盖才可实例化)

3.多态:在继承或实现关系下提高程序扩展性

①转型

              a向上 Animal a = new Dog()

              b向下 Dog d = (Dog)a

       Note:Object类可用类内多种方法equals 、toSrting

②内部类:

内部类可以直接访问外部类中的成员,包括私有成员。

而外部类要访问内部类中的成员必须要建立内部类的对象。

4异常(Exception)

①throws与throw的区别:

•  thorws用在函数上,后面跟异常类名。

•  throw用在函数内,后面跟异常对象。

②构造函数异常继承Exception和RuntimeException区别:

              aException 需要throws声明

              调用者捕获→处理→继续执行→使用构造函数错误数据→失败

       bRuntimeException 不需要throws声明

       调用者不知道→异常出现→调用者程序停→显示→修改

③捕获语句

try

{  需要检测的代码;

}

catch(异常类  变量)

{  异常处理代码;

}

finally

{  一定会执行的代码;      

}

Finally代码块只有一种情况不会被执行。就是在之前执行了System.exit(0)。

5包的使用:便于多个类的管理


①权限

②import关键字:导入包

③jar包:

a设置:jar –cuf haha.jar pack

              b使用:set classpath = .\haha.jar


四、多线程

1多线程:合理使用CPU。

       解决主线程遇到循环而在指定位置停留较长时间,无法执行下面任务。

2创建线程

①继承Thread类

l  定义一个类继承Thread;

l  重写run方法;

l  创建子类对象;

l  调用start方法开启线程,并调用run方法。

②实现Runnable接口

l  定义一个类实现Runnable接口;

l  覆盖run方法;

l  创建子类对象;

l  创建Thread类的对象,并将Runnable的子类对象作为参数传递给Thread类的构造函数(明确线程任务);

l  调用Thread类的start方法(开启线程)

Note:区别

a 实现Runnable接口避免单继承的局限性,较常用;

b Runnable接口对线程对象和线程任务进行解耦,更符合面向对象。

3.安全问题

①线程随机性:线程任务中操作共享数据;

②延迟:共享数据的代码有多条(运算有多个)。

4多线程通信

①lock接口

       a可替代同步synchronized,且比同步更厉害,有更多操作;

       block()获取锁,unlock()释放锁。

②旧锁和新锁区别

l  旧锁:每个锁上都有一组监视器方法

Synchronized(obj)

{      obj.wait();

       obj.botify();

}

l  新锁:对象和方法分离(一个锁可有多个方法)

Lock lock = new ReetrantLock();        //对象

Condition con = look.newCondition();      //方法

lock.lock();

con.await();

con.signal();

lock.unlock();

5多线程细节

①wait、sleep区别   

wait():释放cpu执行权,释放锁。

              sleep():释放cpu执行权,不释放锁。

②线程停止及恢复

              停止:run方法结束即可;

              恢复中断:interrupt强制恢复运行

③守护线程

              前台线程结束,后台线程自动结束。

              t1.start();

              t2.set.Daemon(true);   //t2为守护(后台)线程

              t2.start();

五、API

1.集合(Collection)

 

①List和Set接口

l  List:可存放重复元素,元素存取是有序的。

ArrayList:线程不安全,查询速度快。

LinkedList:链表结构,增删速度快。

Note:迭代时对元素操作ListIterator子接口

       List list = new ArrayList();

       ListIterator it = list.listIterator();

l  Set:不可以存放重复元素,元素存取是无序的。

HashSet:哈希表结构顺序,查询速度快。

                   唯一性:hashCode()、equals()方法

TreeSet:二叉树结构,可以对Set集合中的元素进行排序。

                   唯一性:compareTo或者compare 方法

②迭代器(Iterator)

for(Iterator iter =iterator();iter.hasNext();  )  // 获取迭代器对象,判

{                                                                                                 断是否有下一个

       System.out.println(iter.next());

}

③Map

       特点:有对应关系想到Map;

                     内部存储的都是键值对;

                     保证键的唯一性。

l  HashMap:线程不安全,速度快,允许存放null键,null值。

l  TreeMap:对键进行排序,排序原理与TreeSet相同。

 


六、IO流

1.File类

File f1 = new File(“hello”)             //hello文件封装成对象

Filef2 = new File(“D:\\JAVA\\JavaSe_code\\day22e”)//文件夹封装成对象

File f3 = new File(“D:\\JAVA\\JavaSe_code\\day22e”,”hello.java”) 

File f2 = new File(“D:\\JAVA\\JavaSe_code\\day22e\\hello.java”)

//固定路径封装Java对象


2 字节流


3字符流

4集合Properties(键值对)

       ①作用:存储切割文件后产生的配置文件

       ②应用:Properties prop = new Properties();//创建

      prop.setProperty("zhangsan", "39");      //添加数据

      prop.setProperty("lisi", "29");

      FileWriter fw = new FileWriter("info.properties");

//输出流固定格式

      prop.store(fw, "info");             //路径备注

      fw.close();

5序列流SequenceInputStream

对碎片文件合并,将多个读取流合并为一个

6对象的读写

①对象写 ObjectOutputStream(序列化)

②对象读 ObjectInputStream(反序列化)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值