最近碰到一些应用问题,涉及到了Java中的垃圾回收机制,Garbage Collection,简称GC,这其中的学问,还是不少的,有很多东西需要学习。...首先,关于GC的定义,简单讲,他就是Java垃圾回收机制。目前主流的JVM(HotSpot)采用的是分代收集算法。...与C++不同的是,Java采用的是类似于树形结构的可达性分析法来判断对象是否还存在引用。即从gcroot开始,把所有可以搜索得到的对象标记为存活对象。...作为程序员要关注的区域主要有5块,分别是方法区(Method Area),Java栈(Java stack),本地方法栈(Native Method Stack),堆(Heap),程序计数器(Program...旧生代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象,当执行Full GC后空间仍然不足,则抛出错误:java.lang.OutOfMemoryError: Java heap space
,序列化的笔记参见[Java-note-序列化.md][5] 15.Java的方法区 与堆一样,是线程共享的区域。...通过方法重写和方法重载实现多态 方法重写是指子类重写了父类的同名方法 方法重载是指在同一个类中,方法的名字相同,但是参数列表不同 30.Java文件 .java文件可以包含多个类,唯一的限制就是:一个文件中只能有一个...37.Java语言的鲁棒性 Java在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。它提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。...另外,Java在编译时还可捕获类型声明中的许多常见错误,防止动态运行时不匹配问题的出现。...38.Java语言特性 Java致力于检查程序在编译和运行时的错误 Java虚拟机实现了跨平台接口 类型检查帮助检查出许多开发早期出现的错误 Java自己操纵内存减少了内存出错的可能性 Java还实现了真数组
什么是 Java 虚拟机?为什么 Java 被称作是 “ 平台无关的编程语言 ” ? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。 ...Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。 Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。 ...JDK: java 开发工具包 , 包含了 JRE 、编译器和其它工具(如: javaDOc 、 java 调试器 ) JRE: java 运行环境 , 包含 java 虚拟机和 java 程序所需的核心类库...可能比较让人迷惑的就是 java 中的对象传递时,对形参的改变依然会意向到该对象的内容。 下面这个例子来说明 java 中是值传递 . ...系统类加载器( system class loader ):它根据 Java 应用的类路径( CLASSPATH )来加载 Java类。一般来说, Java 应用的类都是由它来完成加载的。
{/collapse-item} {collapse-item label="instanceof "} instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例...enum定义的类型就是class,只不过它有以下几个特点: 定义的enum类型总是继承自java.lang.Enum,且无法被继承; 只能定义出enum的实例,而无法通过new操作符创建enum的实例;...还有一种类,它被定义在另一个类的内部,所以称为内部类(Nested Class)。Java的内部类分为好几种,通常情况用得不多,但也需要了解它们是如何使用的。...,可以定义多个参数, 变量参数2代表循环的次数,也可以为多个参数, 参数3 代表每次循环后所增减的值 注释:For里面也可以进行break语句 Java作为一种面向对象语言。...:符号表示的,具体的含义其实就和if-else结构的含义差不多,这种运算符会将某个条件作两种处理,如果满足条件的话就执行第一个结果,如果不满足的话就执行另外一个结果 //java 三元运算符
1.概述 在Java中,除了基本数据类型之外,其它类型都是引用数据类型,比如String类型和自己定义的class类、数组、接口都是引用类型。...2.什么是值类型和引用类型[定义] 值类型也就是8种基本数据类型; 引用类型表示你操作的数据是同一个,也就是说当你传一个参数给另一个方法时,你在另一个方法中改变这个变量的值,那么调用这个方法是传入的变量的值也将改变....值类型表示复制一个当前变量传给方法,当你在这个方法中改变这个变量的值时,最初生命的变量的值不会变.通俗说法: 值类型就是现金,要用直接用;引用类型是存折,要用还得先去银行取现。...3.值传递和引用传递 [值传递] 基本数据类型赋值都属于值传递,值传递传递的是实实在在的变量值,是传递原参数的拷贝,值传递后,实参传递给形参的值,形参发生改变而不影响实参。 ...引用传递传递的是对象的引用地址,也就是它的本身(自己最通俗的理解)。 引用传递:传的是地址,就是将实参的地址传递给形参,形参改变了,实参当然被改变了,因为他们指向相同的地址。
作者:晓风 出处:https://xwjie.github.io 近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?...又怎么样才算掌握了java的基础知识呢?这个问题还真值得仔细思考。 我做j2ee开发已经超过十载,作为过来人,心路历程估计和大家差不多。...编码的前几年,很长一段时间觉得java简单,开发实现各种功能都很轻松,代码写起来根本不费劲(主要是因为写的代码都是一些功能业务逻辑)。...苦恼*2 过了很长一段这种惶惶不可终日的日子,决定自己要改变,改变的方向就是阅读自己用到的java相关的源代码,看看jdk是如何实现的。就从基本的数据结构看,然后看多线程相关,在学习前台等等。...说了这么多,我想说的就是,j2ee的基础知识就是你做项目中代码背后的东西。提高自己水平的方法很简单,就是把大部分时间去了解实现原理,了解思想,让自己的知识串起来,形成体系。
近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?又怎么样才算掌握了java的基础知识呢?这个问题还真值得仔细思考。...编码的前几年,很长一段时间觉得java简单,开发实现各种功能都很轻松,代码写起来根本不费劲(主要是因为写的代码都是一些功能业务逻辑)。...但同时自己心里明白,自己其实没有什么水平,自己这3,4年以来学懂的东西就那么多,其他人几个月就可以学会,自己的竞争力在哪里?这种矛盾的心理,困扰了我非常长的时间,非常的苦恼!...苦恼*2 过了很长一段这种惶惶不可终日的日子,决定自己要改变,改变的方向就是阅读自己用到的java相关的源代码,看看jdk是如何实现的。就从基本的数据结构看,然后看多线程相关,在学习前台等等。...说了这么多,我想说的就是,j2ee的基础知识就是你做项目中代码背后的东西。提高自己水平的方法很简单,就是把大部分时间去了解实现原理,了解思想,让自己的知识串起来,形成体系。
上一篇介绍了五种NIO模型,本篇将介绍Java中的NIO类库,为学习netty做好铺垫 Java NIO 由3个核心组成,分别是Channels,Buffers,Selectors。...监听TCP连接,对每个新进来的连接会创建一个SocketChannel。 Buffer Java NIO中的Buffer用于NIO通道进行交互。...ByteBuffer buf = ByteBuffer.allocate(48); Selector Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够检测到通道是否为读写事件准备好的的组件...用NIO创建的客户端与服务端: 服务端: package com.nio; import java.net.InetSocketAddress; import java.nio.ByteBuffer;...; import java.nio.channels.SocketChannel; import java.util.Date; import java.util.Iterator; import java.util.Set
近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?又怎么样才算掌握了java的基础知识呢?这个问题还真值得仔细思考。...编码的前几年,很长一段时间觉得java简单,开发实现各种功能都很轻松,代码写起来根本不费劲(主要是因为写的代码都是一些功能业务逻辑)。...但同时自己心里明白,自己其实没有什么水平,自己这3,4年以来学懂的东西就那么多,其他人几个月就可以学会,自己的竞争力在哪里?这种矛盾的心理,困扰了我非常长的时间,非常的苦恼!...苦恼*2 过了很长一段这种惶惶不可终日的日子,决定自己要改变,改变的方向就是阅读自己用到的java相关的源代码,看看jdk是如何实现的。 就从基本的数据结构看,然后看多线程相关,在学习前台等等。...说了这么多,我想说的就是,j2ee的基础知识就是你做项目中代码背后的东西。提高自己水平的方法很简单,就是把大部分时间去了解实现原理,了解思想,让自己的知识串起来,形成体系。
源 / 知乎 文 / 晓风轻 近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?...又怎么样才算掌握了java的基础知识呢?这个问题还真值得仔细思考。 我做j2ee开发已经超过十载,作为过来人,心路历程估计和大家差不多。...编码的前几年,很长一段时间觉得java简单,开发实现各种功能都很轻松,代码写起来根本不费劲(主要是因为写的代码都是一些功能业务逻辑)。...苦恼*2 过了很长一段这种惶惶不可终日的日子,决定自己要改变,改变的方向就是阅读自己用到的java相关的源代码,看看jdk是如何实现的。 就从基本的数据结构看,然后看多线程相关,在学习前台等等。...说了这么多,我想说的就是,j2ee的基础知识就是你做项目中代码背后的东西。提高自己水平的方法很简单,就是把大部分时间去了解实现原理,了解思想,让自己的知识串起来,形成体系。
前言: 接着《java基础知识01》,再来聊聊剩下的那些知识点。 一、java基础类库: 1、String字符串: 字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中。...服务端网络编程步骤: 监听端口 获得连接 交换数据 关闭连接 3、Java网络编程: 和网络编程相关的API位于java.net包下。 (1)....部分相关API如下: InetAddress:java 中ip对象 Socket:套接字,通信的端点。...s.close(); ss.close(); } 五、设计模式: Java有23中设计模式,这里只挑几个常用的说一说,想深入了解可以研读《Java设计模式》这本书。...总结: 《java基础知识01》和本文简陋的总结了一些java基础的知识点,由于本人只是个小白,只能在此抛砖引玉,望各位大神多多指点!
J2SE:java标准版,适用于开发桌面应用程序; J2ME:java微型版,适用于消费产品,如手机、掌上计算机; J2EE:java企业版,用来构建企业服务应用; 对象的声明: 类名 对象名;...: 可以在类的内部定义同名的方法,只要它们的参数列表各不相同就不会发生冲突,这就是方法重载。。。...所以的类的父类是 Object 类; 多态: 接口的多种不同的实现方式; 抽象类与抽象方法: abstract abstract不能用来修饰实例对象; abstract不能与private,static...,final等同时修饰一个成员方法; 抽象类代表此类必须被继承才能使用,抽象方法必须被覆盖过才能使用; 接口: interface 接口中的成员变量一律是公共的、静态的、最终的; 就是一个抽象类,...引用; super关键字的使用: super是对父类的一个引用,在一个对象内部,子类引用父类的成员格式: super.变量名,super.方法名;
继承 继承的好处 提高了代码的复用性 提高了代码的维护性 让类与类之间产生了关系,是多态的前提 继承弊端 类的耦合性增强了 开发的原则:高内聚,低耦合 耦合:类与类的关系 内聚:就是自己完成某件事情的能力...继承特点 Java只支持单继承 Java支持多层继承(继承体系) 如果想用这个体系的所有功能用最底层的类创建对象 如果想看这个体系的共性功能,看最顶层的类 继承注意事项 子类只能继承父类所有非私有的成员...调用本类的其他构造方法,但是子类的其他构造方法中一定会有一个去访问了父类的带参构造方法 让父类提供无参构造 因为子类会继承父类中的数据,可能还会使用父类的数据 所以,子类初始化之前,一定要先完成父类数据的初始化...override(重写):发生在java的继承中,当子类需要使用和父类方法名相同,但实现过程不同的方法时,就会用到重写。...需要注意的是重写的方法的参数列表必须与弗雷的被重写的方法的参数列表完全一直,但返回值类型可以是父类被重写方法返回值类型的衍生类或者是相同类. overload(重载) : 重载发生在同一个类中,同一个类中需要用相同的方法名但实现过程不同的时候用到重载
一、Java语言的特点 简单性 Java看起来设计的很像c++,取消了很多程序员很少使用的特征。例如:Java不支持go to语句,提供了break和continue语句以及异常处理。...可靠性方面最重要的增强之一是Java的存储模型。Java不支持指针,它消除重写存储和讹误数据的可能性。类似地,Java自动的“无用单元收集”预防存储漏泄和其它有关动态存储分配和解除分配的有害错误。...编译的Java代码中的存储引用在运行时由Java解释程序决定实际存储地址。 Java运行系统使用字节码验证过程来保证装载到网络上的代码不违背任何Java语言限制。...例如,Java显式说明每个基本数据类型的大小和它的运算行为(这些数据类型由Java语法描述)。 Java环境本身对新的硬件平台和操作系统是可移植的。...即java程序的运行时环境,包含了java虚拟机,java基础类库。 JDK: Java Development Kit(java开发工具包)。即java语言编写的程序所需的开发工具包。
int [] numbers = {10, 20, 30, 40, 50}; for (int x : numbers){ System.out.println(x); } //类似python中的
📷
static 关键字 特点 随着类的加载而加载 优先于对象存在 被类的所有对象共享 注意事项 静态方法: 非静态方法:静态变量和成员变量的区别 成员变量 : 只能访问静态变量 成员方法 : 只能访问静态成员方法...成员变量 : 可以是静态的,也可以是非静态的 成员方法: 可以是静态的成员方法, 也可以是非静态的成员方法 因为静态是随着类的加载而加载,this是随着对象的创建而存在 静态比对象先存在 在静态方法中是没有...this关键字的, 静态方法只能访问静态的成员变量和静态的成员方法 所属不同: 静态变量属于类,所以也称为类变量 成员变量属于对象,所以也称为实例变量(对象变量) 内存中位置不同: 静态变量存储于方法区的静态区...,虽然不是关键字,但是被jvm识别 String[] args 以前用于接收键盘录入的 代码块 在Java中,使用{}的代码被称为代码块 根据其位置和声明的不同,可以分为局部代码块,构造代码块, 静态代码块...,同步代码块 局部代码块 在方法中出现,限定变量生命周期,及早释放,提高内存利用率 构造代码块(初始化块) 在类中方法外出现,多个构造方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行
;C++面向过程/对象;java跨平台纯面向对象的语言;.Net跨语言平台; javaSE:java标准版,提供完整的java核心api,以前称为J2SE; javaEE:java企业版,主要正对web...应用程序开发,以前称为J2EE; javaME:小型版,用于移动终端,以前称为J2ME; java Card:支持一些Java小程序,运行在小内存设备上的平台; java语言特点: 面向对象;基本概念:...类、对象;三大特性:封装、继承、多态; 健壮性、完善性;吸收了C、C++的特点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制; 跨平台性 JVM;...通过java语言编写的应用程序可以在不同的操作系统上运行; java两种核心机制: java虚拟机:是一个虚拟的计算机,具有指令集并使用不同的存储区域,负责指令执行,管理数据、内存、寄存器; 垃圾回收机制...; jdk和jre: jdk,即java开发工具包其中包含了java的开发工具,也包含了jre,安装了jdk就不用再安装jre; jre:java运行环境,包括java虚拟机和java程序所需的核心类库等
四、 Java类和对象 1.面向对象简述 面向对象是一种现在最为流行的程序设计方法,几乎现在的所有应用都以面向对象为主了,最早的面向对象的概念实际上是由IBM提出的,在70年代的Smaltalk...语言之中进行了应用,后来根据面向对象的设计思路,才形成C++,而由C++产生了Java这门面向对象的编程语言。 ...3.类与对象的定义和使用 在Java中定义类,使用关键字class完成。...在Java开发中,针对属性有这样的定义,在类中定义的属性都要求使用private声明,如果属性需要被外部所使用,那么按照要求,定义属性相应的setter和getter方法,以Computer类中的String...这是因为在整个Java开发中,为了保证程序可以正常执行,即便用户没有定义任何构造方法,也会在程序编译后自动为类增加一个没有参数,方法名称与类名称相同,没有返回值的构造方法。
Java基础知识总结 一:java概述: 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。...2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。...CLASSPATH的设定,对JAVA的初学者而言是一件棘手的事。所以Sun让JAVA2的JDK更聪明一些。...Java堆 对于大多数应用来说,Java堆(Java Heap)是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。...转载请注明出处:http://www.cnblogs.com/BYRans/ PDF版下载链接:《Java基础知识总结》。
领取专属 10元无门槛券
手把手带您无忧上云