首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

简述OC语言

对于一门语言的学习是需要时间领悟的,而对于一些原理性的问题,我们需要清楚其核心思想,知其然而知其所以然,这样才能有利于自己的后续发展。本文只是简述,没有面面具到(后续会持续更新)。...---- OC是在C语言的基础上加入了一些面向对象的特性(封装,继承,多态),OC完全兼容C语言,在代码中,可以混用C,甚至是C++代码(C++是在C语言的基础上开发的一种面向对象编程语言)。...在C++或Java中调用某个类的方法,在Objective-C中是给该类发送一个消息。...在C++或Java里,类与类的行为方法之间的关系非常紧密,一个方法必定属于一个类,且于编译时就已经绑定在一起,所以你不可能调用一个类里没有的方法。...而C语言在编译阶段就会报错)。只有在真正运行的时候才会根据函数的名称找 到对应的函数来调用。

2K20

java 注解简述

Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation 类型作说明。...Java5.0定义的元注解: @Documented 标记生成javadoc @Inherited 标记继承关系 @Retention 注解的生存期 @Target 标注的目标 @Target 注解 说明了...CLASS:在class文件中有效(即class保留) 3.RUNTIME:在运行时有效(即运行时保留) Retention meta-annotation类型有唯一的value作为成员,它的取值来自java.lang.annotation.RetentionPolicy...//测试时不能自动引入,所以放在这里 import java.lang.annotation.RetentionPolicy; @Target(ElementType.FIELD) @Retention...自定义注解 @interface 注解的作用是可以利用反射来获取数据 使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节

13110
您找到你想要的搜索结果了吗?
是的
没有找到

Java 内存模型简述

Java 内存模型是面试官最喜欢问的问题之一。 Java 内存在逻辑功能上分成 5 个区。方法区,堆区,JVM 栈,方法栈,程序计数器(PC 寄存器)。 其中方法区,堆区是所有线程都共享的。...Java8 中已经移除了方法区,增加了一个叫做元空间的本地内存区,不过元空间与方法区是有区别的,元空间使用的是本地内存,而不是 JVM 中划分的。...Java1.7 之前,字符串常量池存放在方法区,Java1.7 之后移到了堆区。 堆区就是所有的实例对象都放在里面,所有的线程都能访问,垃圾回收也主要在这里发生。...根据 Java 虚拟机规范的规定,Java 堆可以处于物理上不连续的内存空间中,只要逻辑上是连续的即可。...Java 内存模型划分就是以上几种。但是细究下去还有其他的更多的知识点,比如原子性,可见性等概念。会在后续的文章中讨论。

56720

java内部存储简述

咱们在这里介绍java的基本数据类型,类,类内成员变量,方法的存储结构,以及使用过程中的内存变化; java数据类型可以分为两大类型:基本数据类型,引用型数据类型。 ?...2基本数据类型 java的基本数据类型依占位大小从小到大依次是: boolbean(1位) byte(8位) char(16位) short(16位) int(32位) float(32位) long...3String数据类型 String 是java 里面已经封装好的引用型数据类型,每次初始化一个String类型的变量就会创建一个String 的对象。...其中加载是 把你写的java程序转化成机器编码并加载到jvm虚拟机;链接 主要是对加载到jvm中的编码格式,函数调用等进行测试,用我的个人理解这两步 就像我们日常说的编译;最后是程序的初始化,就是对你程序中的常量...虚拟机栈 :用于存储局部变量表、操作数栈、动态链表、方法出口;线程私有,就是在程序运行阶段调用方法时,会把信息调用到本区域; 本地方法栈:java程序调用native方法存储位置; 堆: 用于存储java

58530

简述Java内存模型

2.3.1什么是Java内存模型 在介绍Java内存模型(JMM)前,我要打消读者一个错误的认知,那就是JMM与JVM到底是什么关系,现在告诉大家,Java虚拟机模型(JVM)与Java内存模型(JMM...为什么这么说,我来解释一下:想必我的读者大部分都是Java开发工程师,成为一名Java开发工程师必备的两点,就是要了解Java的语法,以及使用Java API,拥有这两点你就可以编写Java代码,编写后的代码需要在...JDK(Java Development Kit)就是由Java程序设计语言Java API类库、Java虚拟机这三部分组成的,是Java程序开发的最小环境(如图2-6所示)。...我们还可以继续把Java API类库分成Java SE API子集和Java虚拟机两部分统称JRE(Java Runtime Environment),JRE是Java程序运行的标准环境。...图 2-6 Java技术体系 介绍了Java组成的基本知识后,就让我们聊一聊什么是JMM。

39320

Java 引用类型简述

当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。...Final Reference 当前类是否是finalizer类,注意这里finalizer是由JVM来标志的( 后面简称f类 ),并不是指java.lang.ref.Finalizer类。...但是f类是会被JVM注册到java.lang.ref.Finalizer类中的。 ① 当前类或父类中含有一个参数为空,返回值为void的名为finalize的方法。...软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收器回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。...* 分配大块内存 * Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

70170

java反射01-简述

简述 理解 意义:反射的意义是在于改变程序运行时的状态。 比如我在程序没运行之前,我不知道我需要什么对象,但是我想在程序运行的过程中去动态的说我想要什么东西,这时可以通过反射去实现。...java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性; 这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制...Java 类在运行的时候,某个类无论生成多少个对象,他们都会对应同一个Class对象,它表示正在运行程序中的类和接口。...Class 类的实例表示Java应用程序运行时的类枚举或接口和注释(每个Java类运行时被表示为JVM中的类对象) 数组还映射到一个类对象,该类对象由具有相同元素类型和维度的所有数组共享。...当该类的字节码文件被加载时,它们必须接受相关的验证,以确保它们不被破坏,并且不包含坏的Java代码(这是Java的安全机制检测)。

9320

简述java序列化

什么是Java对象序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。...Java对象序列化就能够帮助我们实现该功能。 使用Java对象序列化,在保存对象时,会把其状态保存为一组字节,在未来,再将这些字节组装成对象。...Java序列化API为处理对象序列化提供了一个标准机制,该API简单易用,在本文的后续章节中将会陆续讲到。 2....简单示例 在Java中,只要一个类实现了java.io.Serializable接口,那么它就可以被序列化。...java.lang.Enum,而该类实现了Serializable接口,所以枚举类型对象都是默认可以被序列化的。

41850

简述Java类加载机制

类加载本质 Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行验证、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是Java虚拟机的类加载机制。...对象,作为方法区这个类的各种数据的访问入口; 其实,虚拟机并没有明确规定类的二进制字节流从哪里获取,这也是Java虚拟机强大的原因,而许多Java技术的基础也是建立在这个基础之上的。...resolve) { resolveClass(c); } return c; }} 其实对于虚拟机来说,只有两种加载器,一种是启动类加载器,是有C++语言实现的...,是虚拟机的一部分;另外一部分是所有的其他类加载器,由Java语言编写,独立于虚拟机之外,都继承自抽象类java.lang.ClassLoader。...---- 参考资料: 《深入理解Java虚拟机》 《Java虚拟机精讲》 https://www.ibm.com/developerworks/cn/java/j-lo-classloader/ https

1.8K40

java内存模型_简述java内存模型

什么是JMM   JMM即为JAVA 内存模型(java memory model)。...Java内存模型,就是为了屏蔽系统和硬件的差异,让一套代码在不同平台下能到达相同的访问结果。JMM从java 5开始的JSR-133发布后,已经成熟和完善起来。   ...更多的时候,使用java的happen-before规则来进行分析。   模型特征   原子性:例如上面八项操作,在操作系统里面是不可分割的单元。...有序性:java的有序性跟线程相关。如果在线程内部观察,会发现当前线程的一切操作都是有序的。如果在线程的外部来观察的话,会发现线程的所有操作都是无序的。...因为JMM的工作内存和主内存之间存在延迟,而且java会对一些指令进行重新排序。

1.1K20

简述JVM基础(一):走进Java

二、Java技术体系 Java、Groovy、JRuby等运行在Java虚拟机上的语言以及相关的程序都属于Java技术体系中的一员; Java虚拟体系组成: Java程序设计语言 各种硬件平台上的Java...虚拟机 Class文件格式 JavaAPI类库 第三方类库 JDK: Java设计语言Java虚拟机、Java API 类库 统称为JDK(Java Development Kit),为Java程序开发的最小环境...; 三、Java发展史 1991年4月,James Gosling(Java之父——詹姆斯·高斯林)在sun公司领导了绿色计划,Java语言前身:Oak(橡树)诞生; 1995年5月23日,Oak改名Java...虚拟机,没有遵循Java虚拟机规范; 使用寄存器架构,而不是JVM常用的栈架构; 不能直接执行Class文件,但是可以执行有Class文件转化后的dex文件; 五、小结 在Java相关技术中,JVM是Java...语言的运行环境,除了我们所熟知的Java,还有Groovy等语言都是运行在JVM之上的。

37610

JAVA运行环境及运行过程简述

初学java会遇到各种各样的问题,从环境安装到环境运行,都需要重新开始,难免会遇到不少问题,下面,我将从初学java的角度介绍环境的安装及配置过程,及环境运行方法。...环境安装及配置 学习Java需要提前准备好两个东西,一个是JDK,还有一个为记事本,后续的代码编写需要在记事本中进行。...具体安装见下文: 1.安装环境下载 Java需要的环境为JDK,而大家需要做的,不只是下载安装JDK,还需要进行环境配置,详细的安装及配置过程如下: JDK下载链接及配置过程详解 注意 请先查询自己的电脑是...不同于C语言的是,初学java时运行方式有些不同,下面我将跟大家分享一下最全的代码运行过程: 任意选择一个文件夹创建文本文件 修改文件名为“HelloWorld.java” 右键选择打开方式,以Sublime...(输入回车) java 文件名(输入回车) 7.若代码中有中文注释,则如下图输入 则编译运行成功!

1.5K30

Java日期计算常用方法《简述版》

欢迎大家来踩踩~ 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~ 《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大小厂~ 希望本文能够给您带来一定的帮助文章粗浅...Java日期计算常用方法《简述版》 Java中进行日期计算常用的方法包括以下几种,这里提供简要的总结: java.util.Date 和 java.util.Calendar: java.util.Date...java.util.Calendar 提供了日期和时间的基本操作方法,但使用起来繁琐。 java.time包(Java 8引入的新时间API): LocalDate:处理日期,无时区信息。...总的来说,Java 8 引入的java.time包提供了更为方便和灵活的日期计算方式,避免了以前java.util.Calendar的繁琐操作。根据需要,选择适合的日期类和方法来执行日期计算和操作。...对象 Date d1 = new Date(dt.getMillis()); Date d2 = dt.toDate(); //转换成java.util.Calendar

5010
领券