文档章节

Java Se

披荆斩棘
 披荆斩棘
发布于 2015/09/06 20:48
字数 1566
阅读 5
收藏 0

static  (属性): 

    静态成员属于类本身的,而不是属于对象,被类的所有对象所共有.

    即便不创建对象,也可以使用了类本身的今天成员 (私有成员不行)

static (方法) : 

    1. 在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法).而不能直接访问类中的非静态成员. 

    2. 静态方法不能以任何方式引用this和super关键字

    3. 静态方法只能访问类的静态成员

继承

     1. 代码得到极大的重用

     2. 形成一种类的层次体系结构

     3. 为多态创造条件

         子类内部可以访问父类的非私有成员

         通过子类对象名只能访问从父类继承过来的非私有成员.

     总结 : 

          私有不能被继承

          物理上已经被继承过来了,只不过逻辑上程序员不能去访问.

         因此继承需要慎重,否则会浪费内存

多态

    子类对象可以直接复制给父类引用,但父类对象在任何情况下都不可以直接付给子类引用. ( 狗可以当动物看,但是动物不能当狗看)

    抽象类不能够new对象,但是可以定义一个抽象类型的数据,或者说指向一个抽象类的指针. 

比如 : 

    A(抽象类)

    A  a; 正确

    A a = new A(); 错误

final

    final 修饰类 : 不能被继承

    final 修饰属性 : 只能,必须赋一个值

    final 修饰方法 : 该方法可以被子类继承,但是不能重写.

接口 

    定义 : 

        就是抽象方法和常量值的集合.从本质上讲接口就是一种特殊的抽象类

面向对象总结 

     封装 

     继承

     多态 

    

线程

     定义 : 线程是一个程序里的不同执行路径.

以前编写的程序 : 

     一个入口,一个出口,一个顺序执行的序列.

     过程中任何时刻只有一个单执的执行点.

     单个程序内部是可以在同一时刻进行多种与运算的.这就是所有的多线程

使用 : 

    1. 创建一个继续Thread的类,并重写 fun() 方法好了

        class A extends Thread{run(…){}}

    2. 构造一个A类对象

        A a = new A();

    3. 调用a的start方法

        a.start();这样它会自行调用run方法

注意 : 

    start() 方法的功能就是创建一个新的线程,并自动调用线程的run()方法,直接调用run() 方法是不会创建一个新的线程的

     执行一个线程实际就是执行线程中的run()中的代码

     执行完a.start()方法后,并不代表a所对象的线程就一定立即得到了执行,a.start();执行完后执行表示a线程具有了可以被立即被CPU执行的资格,但是由于想抢占CPU执行线程很多,CPU并不一定立即去执行a所对应的线程.

    一个Thread对象,只能代表一个线程,

    一个Thread对象,不能调用两次start()方法否则会抛异常

     当然是实现Runnable接口的类也可以使用多线程.

线程的串行化

    在多线程程序中,如果一个线程运行中要用到另一个线程的运行结果,则可进行线程的串行化处理.

    Synchronized

    Synchronized(参数)

    {

        表示如果当前线程能占有Synchronize(this)括号里的参数,那么就可以执行内部的代码,如果不能那么内部代码就不执行,而且该参数只能被一个线程占用.

        当Synchronize 中的代码执行玩后就是否对该参数的占有.

        如果A线程占有了该线程,那么BCD就不能占有,只能等A线程执行完后.ABCD再次同时竞争

    }

Synchronized 修饰代码块

    格式 : 

    Synchronized(类对象名 aa)

    { }

功能 : 

    Synchronized(类对象名 aa) 的含义是 : 

    判断aa是否已经被其他线程霸占,如果发现已经被其他线程霸占,则当前线程陷入等待中,如果发现aa没有被其他线程霸占,则当前线程就霸占住aa对象,并执行代码块…执行完后会自动是否对aa对象的霸占,此时其他线程会相互竞争对aa的占有,最终CPU会选择其中的某一个线程执行.

最终导致的结果是 : 

    一个线程正在操作某资源的时候,将不允许其他线程操作该资源,即一次只允许一个线程处理该资源.

    this.wait();暂停该线程     this.notify()恢复该线程

    this.notify() 功能 : 

        不是叫醒正在执行this.notify()的当前线程,而是叫醒一个现在正在wait this对象的其他线程,如果有多个线程正在wait this 对象.

        通常是叫醒最先wait this对象的线程,具体叫醒哪一个,有系统调度器控制,程序员无法控制

    假设有 T1,T2,T3,T4四个线程

    T4 ->>aa.notify()语句

    即便T1,T2,T3没有一个线程因为wait aa对象而陷入阻塞状态,T4线程执行aa.notify()方法时不会有任何错误

总结 : 

     aa.wait()

     将执行aa.wait()的当前线程转入阻塞状态,让出CPU的控制权

     释放对aa的锁定.是否对aa的Synchronized霸占

IO流

    如果有一个类,这个类专门是用来把一个设备的数据和我们当前的程序进行数据的传输那我们这个类就叫 : 流

节点流和处理流

原始流 : 

    可以从一个特定的数据源(节点)读写数据(如 文件,内存)

包装流 : 

    是连接在已存在的流(节点流或包装流)之上通过对数据的处理为程序提供更为强大的读写功能

流就是程序和设备之间嫁接起来的一根用于数据传输的管道,这个管道上有很多按钮,不同的按钮可以实现不同的功能

这根带按钮的用于传输数据的管道就是流.

TClient.java

TServer.java







© 著作权归作者所有

上一篇: Java Se
下一篇: 多态
披荆斩棘
粉丝 2
博文 26
码字总数 22990
作品 0
深圳
高级程序员
私信 提问
浅谈Java SE新版本发布线路图

Java SE 9发布于2017年09月22日,也就是从这个版本开始,Java版本遵循半年一个版本的更新速度,Oracle将每三年指定一个版本作为长期支持(LTS)版本。到目前为止,已经发布了Java SE 10和Jav...

韬声依旧在路上
2018/09/30
0
0
Java 7 与 Java 8 JSR 核准通过

最近Java JSR经核准通过,但Apache全部投了反对票。Google与Tim Peierls则对Java SE 7与Java SE 8 JSR投了反对票,以此在闹得沸沸扬扬的TCK许可与使用限制这个问题上发出了自己的声音。 Proj...

鉴客
2011/01/11
2.2K
9
JVM系列第1讲:Java 语言的前世今生

Java 语言是一门存在了 20 多年的语言,其年纪比我自己还大。虽然存在了这么长时间,但 Java 至今都是最大的工业级语言,许多大型互联网公司均采用 Java 来实现其业务系统。大到国际电商巨头...

陈树义
2018/11/07
0
0
Jersey 2.x 分支 Java SE 兼容性

直到 Jersey 2.6 版本,Jersey 将会兼容 Java SE 6。这个情况将会在在 Jersey 2.7 的版本有所改变。 直到 Jersey 版本 2.25x, 所有的 Jersey 的组件将会兼容 Java SE 7 为目标。这个意思是你...

honeymose
2018/11/06
10
0
Java 9 已在路上,公共审查规范草案出来了

Oracle 的 Iris Clark 在发送给 OpenJDK 邮件列表的邮件中宣布,Java 9 的公共审查规范草案已可用。并表示,如果所有人都对草案感到满意,会将其提交给 JCP 项目管理办公室(PMO),以便下星...

王练
2017/03/11
3.9K
10

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
今天
5
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
今天
8
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
12
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
16
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部