Java基础
Java基础知识
有过执着才能放下执着
有过执着才能放下执着
展开
-
Java基础语法-网络编程
网络编程中的要素:1.IP和端口号。2.网络通信协议:TCP/UDP。原创 2020-06-15 15:36:30 · 119 阅读 · 0 评论 -
Java基础语法-反射
一、Reflection(反射)概念1.Reflection(反射)是Java被视为动态语言的关键,反射机制允许程序在执行期借助Reflection API获得任何类的内部信息,并能直接造作任意对象的内部属性及方法。 Class c = Class.forName("java.lang.String");2.加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过原创 2020-06-10 08:55:24 · 278 阅读 · 0 评论 -
Java基础语法-Map集合
1原创 2020-06-08 14:11:49 · 346 阅读 · 0 评论 -
Java基础语法-Set集合
Set集合:无序(存储顺序和取出顺序不一致),唯一。Set子类:HashSet、LinkedHashSet、TreeSet一、HashSetHashSet:不保证set的迭代顺序,特别是它不保证该顺序永恒不变。底层数据结构是哈希表(元素的链表的数组)。哈希表依赖于哈希值存储。添加功能底层依赖两个方法:(1). int hashCode()(2).boolean equals(Object obj)首先比较哈希值,如果相同,则比较地址值是否相同或者equals。代码示例原创 2020-06-06 15:42:53 · 215 阅读 · 0 评论 -
Java基础语法-泛型
一、泛型类1.把泛型定义在类上。2.格式:public class 类名<泛型类型1.....>。3.泛型类型必须是引用类型。代码示例:public class Student<T>{ private T name; public T getName() { return name; } public void setName(T name) { this.name = name; }原创 2020-06-06 12:53:02 · 545 阅读 · 0 评论 -
Java基础语法-List集合
List子类特点:1.ArrayList:底层数据结构是数组,查询快,增删慢,效率高,线程不安全。2.Vector:底层数据结构是数组,查询快,增删慢,效率低,线程安全。3.LinkedList:底层数据结构是链表,查询慢,增删快,效率高,线程不安全。一、ArrayList代码示例://创建ArrayList集合对象。ArrayList<String> arrayList = new ArrayList<String>();//添加元素arrayLis原创 2020-06-06 13:16:44 · 213 阅读 · 0 评论 -
Java基础语法-转换流
一、OutputStreamWriterOutputStreamWriter extends Writer是字符流通向字节流的桥梁,可使用指定的charset,将要写入流中的字符编码成字节。构造方法:OutputStreamWriter(OutputStream out)OutputStreamWriter(OutputStream out,String charsetName)参数:OutputStream out:字节输出流,可以用来写转换之后的字节到文件中。String原创 2020-06-05 16:51:05 · 92 阅读 · 0 评论 -
Java基础语法-缓冲流
字节缓冲流 BufferedInputStream BufferedOutputStream 字符缓冲流 BufferedReader BufferedWriter 一、BufferedOutputStream(字节缓冲输出流)BufferedOutputStream extendsOutputStream构造方法:BufferedOutputStream(OutputStream out)BufferedOutputStream(...原创 2020-06-05 15:50:43 · 163 阅读 · 0 评论 -
Java基础语法-IO流
输入流 输出流 字节流 InputStream OutputStream 字符流 Reader Writer 一、FileOutputStream(文件字节输出流)FileOutputStream extends OutputStream。构造方法:FileOutputStream(String name):创建一个向具有指定名称的文件中写入数据的输出流文件流。FileOutputStream(File file):...原创 2020-06-05 13:44:25 · 172 阅读 · 0 评论 -
Java基础语法-File
一、File概述java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。java把文件和文件夹(目录)封装为一个File类,我们可以使用File类对文件和文件夹进行操作。File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法。...原创 2020-05-27 09:07:17 · 215 阅读 · 0 评论 -
什么是Java
Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。Java可运行于多个平台,具有跨平台特性。Java语言三大特性:封装、继承和多态原创 2020-05-06 14:28:59 · 117 阅读 · 0 评论 -
Web开发环境安装
一.JDK安装以及配置环境变量1.百度搜索要安装JDK版本(JDK8),找到下载地址。2.同意协议。3.下载电脑对应的版本。4.双击安装(傻瓜式安装)。5配置环境变量1.我的电脑-->右键-->属性-->高级系统设置-->环境变量。2.系统变量-->新建系统变量-->JAVA_HOME (C:\Program Files\Java\j...原创 2020-05-06 15:19:44 · 138 阅读 · 0 评论 -
Java基础语法-线程池
JDK5.0起提供了线程池相关API:ExecutorService和ExecutorsExecutorService:真正的线程池接口。Executors:工具类、线程池的工厂类,用于创建并返回不同类型的线程池。示例如下:import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * @ClassName PoolTest * @Description 测试线程池原创 2020-05-25 16:31:40 · 173 阅读 · 0 评论 -
Java基础语法-信号灯法(多线程)
生产者消费者问题利用信号灯法解决:1.首先需要四个角色 :1.生产者2.消费者3.商品。2.需要设置 一个标识位。示例如下:/** * @ClassName SignalMethodTest * @Description 生产者消费者问题解决办法-信号灯法 * @Author ywl * @Date 2020-05-25 15:48 * @Version 1.0 **/public class SignalMethodTest { public static void原创 2020-05-25 16:14:23 · 245 阅读 · 0 评论 -
Java基础语法-管程法(多线程)
生产者消费者问题利用缓冲区解决:1.首先需要四个角色 :1.生产者2.消费者3.缓冲区4.商品。2.生产者生产商品放到缓冲区,缓冲区如果满了,生产者停止运作,进入等待。3.消费者从缓冲区拿商品,如果缓冲区商品没有了,先唤醒生产者,然后进入等待。示例如下:/** * @ClassName TubeMethodTest * @Description 生产者消费者问题解决办法-管程法 * @Author ywl * @Date 2020-05-25 14:12 * @Vers原创 2020-05-25 14:47:49 · 423 阅读 · 1 评论 -
Java基础语法-死锁和Lock锁
一、死锁多个线程各自占有一些共享资源,并且相互等待其他线程占有的资源才能运行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情况,某一个同步块同事拥有两个以上对象的锁时,就可能会发生死锁的问题。死锁产生的四个必要条件:1.互斥条件:一个资源每次只能被一个进程使用。2.请求与保持条件:一个进程因请求资源二阻塞时,对已获得的资源保持不放。3.不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。4.循环等待条件:若干进程之间行程一种头尾相接的循环等待资源关系。一、Lo原创 2020-05-25 13:16:59 · 241 阅读 · 0 评论 -
Java基础语法-线程的同步机制
一、线程同步由于同一进程的多个线程共享同一块存储空间,在带来方便的同时,也带来了访问冲突问题,为了保证数据在方法中被访问时的正确性,在访问时加入锁机制synchronized,当一个线程获得对象的排它锁,独占资源,其他线程必须等待,使用后释放锁即可。存在以下问题:1.一个线程持有锁会导致其他所有需要此锁的线程挂起。2..在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延迟,引起性能问题。3.如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能问题。二、同原创 2020-05-25 12:38:30 · 161 阅读 · 0 评论 -
Java基础语法-线程优先级和守护(daemon)线程
1.Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度哪个线程来执行。2.线程的优先级用数字表示,范围从1~10.Thread.MIN_PRIORITY = 1;Thread.NORM_PRIORITY = 5;Thread.MAX_PRIORITY = 10;3.使用以下方式改变或者获取优先级getPriority();setPriority(int newPriority);代码如下:public class Prio原创 2020-05-25 10:11:27 · 211 阅读 · 0 评论 -
Java基础语法-操作线程
1.线程停止不要使用stop或者destroy等过时的或者JDK不建议使用的方法,建议使用标识位。public class StopThreadTest implements Runnable { private boolean flag = true; @Override public void run() { int i = 0; while(flag){ System.out.println("run....T...原创 2020-05-23 16:50:38 · 121 阅读 · 0 评论 -
Java基础语法-线程的五大状态
线程从创建、运行、到死亡总是处于下面五个状态之一:新建状态、就绪状态、运行状态、阻塞状态及死亡状态。1.创建状态Thread t = new Thread();线程对象一旦创建就进入到了创建状态。2.就绪状态当调用start()方法,线程立即进入就绪状态,但不意味着立即调度执行。线程还必须同其他线程竞争CPU时间,只有获得CPU时间才可以运行线程。3.运行状态进入运行状态,线程才会真正执行线程体的代码块。4.阻塞状态当调用sleep、wait或同步锁定时,线程进入阻.原创 2020-05-23 14:39:21 · 173 阅读 · 0 评论 -
Java基础语法-多线程
一、Process(进程)和Thread(线程)1.程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。2.进程(Process)则是执行程序的一次执行过程,它是一个动态的概念,是系统资源分配的单位。3.通常一个进程中包含若干个线程(Thread),当然一个进程中至少有一个线程。线程是CPU调度和执行的单位。4.真正的多线程是指有多个CPU,即多核,如服务器。如果是模拟出来的多线程,即在一个CPU的情况下,在同一个时间点,CPU只能执行一个代码,因为切换的很快,所以有同时原创 2020-05-23 13:40:11 · 168 阅读 · 0 评论 -
Java基础语法-抽象类、接口
一、抽象类1.abstract 修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类。2.抽象类中可以没有抽象方法,但是有抽象方法的类一定要什么为抽象类。3.抽象类不能使用new关键字来创建对象,它是用来让子类继承的。4.抽象方法只有方法的声明,没有方法的实现,它是用来让子类实现的。5.子类继承抽象类,那么就必须要实现抽象类没有实现的抽象方法,否则改子类也要声明为抽象类。public abstract class Person{原创 2020-05-09 10:18:35 · 120 阅读 · 0 评论 -
Java基础语法-封装、继承、多态
一、封装1.我们设计程序要追求“高内聚,低耦合”。高内聚:就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。2.封装(数据的隐藏)通常,应该禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。封装一般是对应属性而言的,属性私有化,用private 修饰类中的属性。例:public class Person...原创 2020-05-08 17:00:08 · 168 阅读 · 0 评论 -
Java基础语法-面向对象(OOP)
一、面向对象思想(抽象的)1.物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后才对某个分类下的细节进行面向过程的思索。2.面向对象适合处理复杂的问题,适合处理需要多人协作的问题。3.对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统,但是,具体到微观操作,仍然需要面向过程的思路去处理。...原创 2020-05-08 15:01:31 · 229 阅读 · 0 评论 -
Java基础语法-数组
一、数组的定义数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定先后次序排列组合而成。其中,每一个数组称作一个数组元素,每个数组元素可以通过一个下标来访问它们。数组的下标是从0开始的。二、声明数组变量首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:double[] a; // 首选的方法或double a[]; // ...原创 2020-05-08 10:30:42 · 120 阅读 · 0 评论 -
Java基础语法-递归
什么是递归?递归就是:A方法调用A方法。就是自己调用自己。递归结构包括两个部分:递归头:什么时候不调用自身方法,如果没有头,将陷入死循环。递归体:什么时候需要调用自身方法。public static int multiple(int n){//递归算阶乘:5! = 5*4*3*2*1; if(n == 1){ return 1; }els...原创 2020-05-07 16:52:24 · 177 阅读 · 0 评论 -
Java基础语法-方法
一、什么是方法?System.out.println():println() 是一个方法。System 是系统类。out 是标准输出对象。Java方法是语句的集合,它们在一起执行一个功能。1.方法是解决一类问题的步骤的有序组合2.方法包含于类或对象中3.方法在程序中被创建,在其他地方被引用方法的设计原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时...原创 2020-05-07 16:36:04 · 123 阅读 · 0 评论 -
Java基础语法-结构
一、顺序结构java的基本结构就是顺序结构,除非特别指明,否则就是按从上到下执行,顺序结构是最简单的算法结构。顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,,就需要使用循环结构。顺序结构是任何一个算法都离不开的一种基本算法结构。二、while 循环结构while是最基本的循环,它的结构为:while( 布尔表达式 ) {//循环内容}只要布尔表...原创 2020-05-07 15:48:47 · 705 阅读 · 0 评论 -
Java基础语法-基本运算符
一、运算符1.算术运算符:+,-,*,/,++,--。int a = 1;int b = a++; b的值为1,因为这里a先复制给b,然后a在自增1。int c = ++a; c的值为3,因为这里a先自增1,再复制给c。-------------------------------------------------------------------------------...原创 2020-05-07 14:16:42 · 179 阅读 · 0 评论 -
Java基础语法-修饰符
一、访问控制修饰符1.default(即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。2.private: 在同一类内可见。使用对象:变量、方法。注意:不能修饰类(外部类)3.public: 对所有类可见。使用对象:类、接口、变量、方法4.protected: 对同一包内的类和所有子类可见。使用对象:变量、方法。注意:不能修饰类...原创 2020-05-07 13:29:43 · 97 阅读 · 0 评论 -
Java基础语法-变量、常量和作用域
一、变量原创 2020-05-07 13:09:39 · 199 阅读 · 0 评论 -
Java基础语法-类型转换
一、类型转换由于java是强类型语言,所以要进行有些运算的时候需要进行类型转换。运算中,不同类型的数据先转换为同一类型,然后进行运算。低 ---------------------------------------------------------------------> 高byte,short,char,--> int ---> long --> f...原创 2020-05-07 09:23:15 · 143 阅读 · 0 评论 -
Java基础语法-数据类型
Java是强类型语言,要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。Java 的两大数据类型:1.基本类型Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。byte:byte 数据类型是8位、有符号的,以二进制补码表示的整数;最小值是-128(-2^7);最大值是127(2^7-1);默认值是...原创 2020-05-07 08:48:35 · 161 阅读 · 0 评论 -
Java基础语法-标识符和关键字
一、标识符Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。关于 Java 标识符,有以下几点需要注意:1.所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始。2.首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合。3.关键字不能用作标识符。4.标识符是大小写敏感的。二、...原创 2020-05-06 16:16:40 · 238 阅读 · 0 评论 -
Java基础语法-注释
一、注释1.为什么要写注释?平时我们编写代码的时候,在代码量比较少的时候或者是写的时间比较短,我们还可以看懂自己写的代码,但是当代码量越来越大、项目时间夸大比较大的时候,我们就需要写注释,否则最后自己写的代码自己都看不懂,书写注释是一个非常好的也是非常必要的习惯。注释并不会被执行,只是写给程序员看的。2.Java中的三种注释1.单行注释。例://这是一个单行注释2.多行注释...原创 2020-05-06 15:50:22 · 103 阅读 · 0 评论