JavaSE_16_网络编程
01、网络编程概述 Java是Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序。 Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在Java 的本机安装系统里,由JVM 进行控制。并且Java 实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境。 计算机网络: 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息、共享硬件、软件、数据信息等资源。 网络编程的目的: 直接或间接地通过网络协议与其它计算机实现数据交换,进行通讯。 网络编程中有两个主要的问题: 如何准确地定位网络上一台或多台主机;定位主机上的特定的应用 找到主机后如何可靠高效地进行数据传输 02、网络通信要素概述 通信双方地址 IP 端口号 一定的规则(即:网络通信协议。有两套参考模型) OSI参考模型:模型过于理想化,未能在因特网上进行广泛推广 TCP/IP参考模型(或TCP/IP协议):事实上的国际标准。 网络通信协议 123456 ...
JavaSE_15_IO流
01、File类的使用 1.1、File类的实例化 java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关 File 能新建、删除、重命名文件和目录,但File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。 File对象可以作为参数传递给流的构造器 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253import org.junit.Test;import java.io.File;/** * File类的使用 * * 1. File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹) * 2. File类声明在java.io包下 * */public class FileTest { /** * 1.如何创建file类 ...
JavaSE_14_泛型
01、为什么要有泛型 泛型:标签 1.1、举例 中药店,每个抽屉外面贴着标签 超市购物架上很多瓶子,每个瓶子装的是什么,有标签。 1.2、泛型的设计背景 集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的对象,所以在JDK1.5之前只能把元素类型设计为Object,JDK1.5之后使用泛型来解决。因为这个时候除了元素的类型不确定,其他的部分是确定的,例如关于这个元素如何保存,如何管理等是确定的,因此此时把元素的类型设计成一个参数,这个类型参数叫做泛型。Collection,List,ArrayList这个就是类型参数,即泛型。 1.3、其他说明 所谓泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时(例如,继承或实现这个接口,用这个类型声明变量、创建对象时)确定(即传入实际的类型参数,也称为类型实参)。 从JDK1.5以后,Java引入了“参数化类型(Parameterizedtype)”的概念,允许我们在创建集合时再指定集合元素的类型,正如:List,这表明该List只能保存字符串类型的对 ...
JavaSE_13_集合
01、Java 集合框架概述 1.1、集合框架与数组的对比及概述 1234567891011121314151617/** * 一、集合的框架 * * 1.集合、数组都是对多个数据进行存储操作的结构,简称Java容器。 * 说明;此时的存储,主要是指能存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库中) * * 2.1数组在存储多个数据封面的特点: * 》一旦初始化以后,它的长度就确定了。 * 》数组一旦定义好,它的数据类型也就确定了。我们就只能操作指定类型的数据了。 * 比如:String[] arr;int[] str; * 2.2数组在存储多个数据方面的特点: * 》一旦初始化以后,其长度就不可修改。 * 》数组中提供的方法非常有限,对于添加、删除、插入数据等操作,非常不便,同时效率不高。 * 》获取数组中实际元素的个数的需求,数组没有现成的属性或方法可用 * 》数组存储数据的特点:有序、可重复。对于无序、不可重复的需求,不能满足。 * */ 1、集合的使用场景 1.2、集合 ...
JavaSE_12_枚举与注解
01、枚举类的使用 1.1、枚举类的理解 类的对象只有有限个,确定的。举例如下: 星期:Monday(星期一)、…、Sunday(星期天) 性别:Man(男)、Woman(女) 季节:Spring(春节)…Winter(冬天) 支付方式:Cash(现金)、WeChatPay(微信)、Alipay(支付宝)、BankCard(银行卡)、CreditCard(信用卡) 就职状态:Busy、Free、Vocation、Dimission 订单状态:Nonpayment(未付款)、Paid(已付款)、Delivered(已发货)、Return(退货)、Checked(已确认)Fulfilled(已配货)、 线程状态:创建、就绪、运行、阻塞、死亡 当需要定义一组常量时,强烈建议使用枚举类 枚举类的实现 JDK1.5之前需要自定义枚举类 JDK 1.5 新增的enum 关键字用于定义枚举类 若枚举只有一个对象, 则可以作为一种单例模式的实现方式。 1.2、自定义枚举类 枚举类的属性 枚举类对象的属性不应允许被改动, 所以应该使用private final修饰 枚举类的使用priv ...
JavaSE_11_常用类(字符串/日期/比较器)
01、字符串相关的类 1.1、String类的概述 12345678910111213141516171819202122import org.junit.Test;/** * String的使用 */public class StringTest { /** * String:字符串,使用一对“”引起来表示。 * 1.String声明为final的,不可被继承 * 2.String实现了Serializable接口:表示字符串是支持序列化的。 * 实现了Comparable接口:表示String可以比较大小 * 3.String内部定义了final char[] value用于存储字符串数据 * 4.String:代表不可变的字符序列。简称:不可变性。 * 体现: * */ @Test public void Test1(){ }} 1.2、理解String的不可变性 1234567891011121314151617181 ...
JavaSE_10_多线程
01、基本概念:程序、进程、线程 程序(program):为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。 进程(process):程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。——生命周期 如:运行中的QQ,运行中的MP3播放器程序是静态的,进程是动态的 进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域 线程(thread),进程可进一步细化为线程,是一个程序内部的一条执行路径。 若一个进程同一时间并行执行多个线程,就是支持多线程的 线程是调度和执行的单位,每个线程拥有独立的运行栈和程序计数器(pc),线程切换的开销小 一个进程中的多个线程共享相同的内存单元/内存地址空间—》它们从同一堆中分配对象,可以访问相同的变量和对象。这就使得线程间通信更简便、高效。但多个线程操作共享的系统资源可能就会带来安全的隐患。 1.1、进程与线程 单核CPU和多核CPU的理解 单核CPU,其实是一种假的多线程,因为在一个时间单元内,也只能执行一个线程的任务。例如:虽然有多车道,但是收费 ...
JavaSE_09_异常
01、异常概述与异常体系结构 在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式,读取文件是否存在,网络是否始终保持通畅等等。 异常: 在Java语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常) Java程序在执行过程中所发生的异常事件可分为两类: Error:Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。比如:StackOverflowError和OOM。一般不编写针对性的代码进行处理。 123456789101112131415/* * Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。 * 比如:StackOverflowError和OOM。 * 一般不编写针对性的代码进行处理。 * */public class ErrorTest { public static void main(String[] args) { //1.栈溢出 ...
JavaSE_08_面向对象(下)(static/final/abstarct/interface)
01、关键字:static 1.1、static 的使用 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过 new 关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。 我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份。 例如所有的中国人都有个国家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253/* * static 关键字的使用 * * 1.static:静态的。 * 2.static 可以用来修饰:属性、方法、代码块、内部类。 * * 3.使用 static 修饰属性:静态变量(或类变量)。 * 3.1 属性:是否使用 static 修饰,又分为:静态属性 VS 非静态属性(实例变量) * 实例变量 ...
JavaSE_07_面向对象(中)(继承/权限修饰符/多态/Object类/包装类)
01、继承性的使用与理解 1、Person 类 1234567891011121314151617181920212223242526272829303132333435/* * 为描述和处理个人信息,定义类 Person */public class Person { String name; private int age; public Person(){ } public Person(String name,int age){ this.name = name; this.age = age; } public void eat(){ System.out.println("吃饭"); sleep(); } private void sleep(){ System.out.println("睡觉"); } public int getAge() { return age; } public void ...