动/静态语言、强/弱类型语言、编译型/解释形语言的区别
动/静态语言、强/弱类型语言、编译型/解释形语言的区别动态类型语言和静态类型语言的区别 动态语言/动态类型语言 理解:在编程时不会给变量定义类型,运行期间才会做数据类型的检查,语言会在该变量第一次赋值时判断该值的类型,并将数据类型记录下来。python就是典型的动态类型语言。 静态语言/静态类型语言 理解:与动态类型语言恰好相反,在编程中定义变量时就要声明该变量的数据类型,在编译期间检查。C、C++、Java就是典型的静态类型语言。 强类型语言和弱类型语言的区别 强类型语言/强制数据类型定义语言 理解:变量定义了数据类型后,如果不经过强转,数据就不能转换为别的数据类型,此语言是数据 安全的语言。C、C++、Java就是强类型语言 弱类型语言 理解:变量可赋不同类型的语言,也就是说此语言常常会隐式转换数据,JavaScript就是弱类型语言 注意: 强弱类型语言并没有非常明确的定义 因为强类型语言需要对每个变量类型做判断,所以强类型语言在速度上要比弱类型略逊一筹,换言之强类型语言带来的严谨性能够避免在变量类型及...
主方法的构造
主方法的构造前言123public static void main(String[] args){ ...} main方法是Java程序的入口 在java核心编程中,JVM会查找类中的public static void main(String[] args),如果找不到该方法就抛出错误NoSuchMethodError:main 程序终止 Main方法必须严格遵循它的语法规则,方法签名必须是public static void,参数是字符串数组类型,如果是Java1.5及以后的版本还可以使用可变参数 123public static void main(String... args){ ...} 灵魂三问 为什么main方法是公有的(public)??? Java指定了一些访问修饰符如:private、默认、protected、public 任何方法或变量都可以声明为public,Java可以从该类之外的地方访问。因为main方法是公共的, JVM就可以轻松的访问执行它。 为什么main方法是静态的(s...
深入乱码
什么是字符集和字符编码? **字符:**在计算机和电信技术中,一个字符是一个单位的字形、类字形单位或符号的基本信息。即一个字符可以是一个中文汉字、一个英文字母、一个阿拉伯数字、一个标点符号等。 **字符集:**多个字符的集合。例如GB2312是中国国家标准的简体中文字符集,GB2312收录简化汉字(6763个)及一般符号、序号、数字、拉丁字母、日文假名、希腊字母、俄文字母、汉语拼音符号、汉语注音字母,共 7445 个图形字符。 **字符编码:**把字符集中的字符编码为(映射)指定集合中的某一对象(例如:比特模式、自然数序列、电脉冲),以便文本在计算机中存储和通过通信网络的传递。 **字符集和字符编码的关系 **字符集是书写系统字母与符号的集合,而字符编码则是将字符映射为一特定的字节或字节序列,是一种规则。通常特定的字符集采用特定的编码方式(即一种字符集对应一种字符编码(例如:ASCII、ISO-8859-1、GB2312、GBK都是即表示了字符集又表示了对应的字符编码,但Unicode不是,它采用现代的模型)),因此基本上可以将两者视为同义词。 为什么乱码是问号不是其他符号呢...
字节码文件解析
字节码文件解析1、在C盘根目录定义一个带包java类(jdk8)12345public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello world"); }} 2、编译文件1javac HelloWorld.java 得到字节码文件 3、使用sublime打开class文件1234567891011121314151617181920212223242526cafe babe 0000 0034 001c 0a00 0600 0f090010 0011 0800 120a 0013 0014 0700 12070015 0100 063c 696e 6974 3e01 0003 28295601 0004 436f 6465 0100 0f4c 696e 654e756d 6265 7254 6162 6c65 0100 046d 61696e01 0016 285b 4c6a 6176 612f...
方法
一.方法二.普通的方法语法结构: 案例:声明一个方法,打印5行三角形 三.带有参数的方法语法结构: 案例1:声明一个方法,打印指定行的三角形 案例2:声明一个方法,打印指定行和符号的三角形 四.带有返回值的方法语法结构: 案例1:声明一个方法,传入两个int类型的数字,返回之和 案例2:声明一个方法,传入三个int类型的数字,返回最大值 案例3:声明一个方法,传入三个int类型的数字,返回最小值 五.方法的重载应用场景: 条件:
命名规范资料
命名规范分类 匈牙利命名法 基本原则是:变量名=属性+类型+对象描述 ps:int g_int_age = 18;(g_ 全局变量/c_ 常量/m_ 局部变量/s_ 静态变量) 下划线命名法 基本原则是:单词与单词之间用下划线隔开,UNIX/LIUNX环境下普遍使用 ps: String file_name = “波多野结衣.avi”; 驼峰命名法(小驼峰命名法) 基本原则是: 第一个单词以小写字母开始,后续单词首字母都采用大写字母 作用:方法、变量 ps:String fileName = “波多野结衣.avi”; 帕斯卡命名法(大驼峰命名法) 基本原则是: 每个单词首字母都采用大写字母 作用:类、接口 ps:public class UserController 总结:不管使用什么命名法,命名最好有意义,起到见名知意的作用
数组
数组前言数据结构分类 数据结构中数据按逻辑结构分为:线性结构、非线性结构 常用的线性结构有:线性表(顺序存储、链式存储)、栈、队列、双端队列、串(一维数组); 常见的非线性结构有:二维数组、多维数组、矩阵、散列表、树、堆、图。 线性结构的特征 集合中必存在唯一的一个”第一个元素”; 集合中必存在唯一的一个”最后的元素”; 除最后元素之外,其它数据元素均有唯一的”后继”; 除第一元素之外,其它数据元素均有唯一的”前驱”。 线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系。 如(a0,a1,a2,…..,an),a0为第一个元素,an为最后一个元素,此集合为一个线性结构的集合。 非线性结构,其逻辑特征是一个节点元素可能有多个直接前驱和多个直接后继。 线性数据结构存储方式 顺序存储结构:顺序表 链式存储结构:链表 常用线性数据结构 常用的线性结构有:线性表(顺序存储、链式存储)、栈、队列、双端队列、串(一维数组)。 线性表(Linear List)就是数据排成像一条线一样的结构,数据只有前后两个方向。 线性表分为顺序存储和链式存储。 ...
数组的查找
数组的查找线性查找概念 线性查找也叫顺序查找,这是最基本的一种查找方法,从给定的值中进行搜索,从一端开始逐一检查每个元素,直到找到所需元素的过程。 元素序列的排列可以有序,也可以无序。 代码实现12345678910111213141516171819202122232425262728293031323334353637383940public class Test01 { public static void main(String[] args) { //线性查找 int[] arr = {45, 62, 15,62, 78, 30}; int index = sequentialSearch01(arr, 62); System.out.println("指定元素首次出现的下标位置:" + index); List<Integer> indexList = sequentialSearch02(arr, 62); System.out.println("指定元素出现...
集合
集合含义 集合是Java API所提供的一系列类,可以用于动态存放多个对象 (集合只能存对象) 集合与数组的不同在于,集合是大小可变的序列,而且元素类型可以不受限定,只要是引用类型。(集合中不能放基本数据类型,但可以放基本数据类型的包装类) 集合类全部支持泛型,是一种数据安全的用法。 集合与数组的不同 数组:一旦初始化后长度不可变,元素类型受限定(String类型的数组只能装String的数据),数组可以存储基本数据类型 集合:长度可变的序列,元素类型不受限定(一个集合可以存储多个数据类型的元素),集合只能存储引用数据类型 Collection家族List接口 特点:有序且可重复(因为List接口中添加了许多针对下标操作的方法) 实现类: ArrayList LinkedList Vector Stack Set接口 特点:无序且不可重复 实现类: HashSet LinkedHashSet TreeSet Map家族 实现类: HashMap LinkedHashMap Hashtable ConcurrentHashMap TreeMap Propert...
深入类加载机制
深入类加载机制初识类加载过程使用某个类时,如果该类的class文件没有加载到内存时,则系统会通过以下三个步骤来对该类进行初始化 1.类的加载(Load) → 2.类的连接(Link) → 3.类的初始化(Initialize) 类的加载(Load):将类的class文件读入内存,并为之创建一个java.lang.Class的对象,此过程由类加载器(ClassLoader )完成 类的连接(Link):将类中的数据加载到各个内存区域中 类的初始化(Initialize):JVM负责对类进行初始化 深入类加载过程类的完整生命周期 :加载、连接(验证、准备、解析)、初始化、使用、卸载 加载 通过一个类的全限定名来获取其定义的二进制字节流 将这个字节流所代表的的静态存储结构转化为方法区的运行时数据结构 在堆中生成一个代表这个类的Class对象,作为方法区中这些数据的访问入口 注意: 相对于类加载过程的其他阶段而言,加载阶段是可控性最强的阶段,因为程序员可以使用系统的类加载器加载,还可以使用自己的类加载器加载,在这里我们只需要知道类加载器的作用就是上面虚拟机需要完成的三件...










