深入乱码
什么是字符集和字符编码? **字符:**在计算机和电信技术中,一个字符是一个单位的字形、类字形单位或符号的基本信息。即一个字符可以是一个中文汉字、一个英文字母、一个阿拉伯数字、一个标点符号等。 **字符集:**多个字符的集合。例如GB2312是中国国家标准的简体中文字符集,GB2312收录简化汉字(6763个)及一般符号、序号、数字、拉丁字母、日文假名、希腊字母、俄文字母、汉语拼音符号、汉语注音字母,共 7445 个图形字符。 **字符编码:**把字符集中的字符编码为(映射)指定集合中的某一对象(例如:比特模式、自然数序列、电脉冲),以便文本在计算机中存储和通过通信网络的传递。 **字符集和字符编码的关系 **字符集是书写系统字母与符号的集合,而字符编码则是将字符映射为一特定的字节或字节序列,是一种规则。通常特定的字符集采用特定的编码方式(即一种字符集对应一种字符编码(例如:ASCII、ISO-8859-1、GB2312、GBK都是即表示了字符集又表示了对应的字符编码,但Unicode不是,它采用现代的模型)),因此基本上可以将两者视为同义词。...
主方法的构造
主方法的构造前言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就可以轻松的访问执行它。...
命名规范资料
命名规范分类 匈牙利命名法 基本原则是:变量名=属性+类型+对象描述 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...
数组的查找
数组的查找线性查找概念 线性查找也叫顺序查找,这是最基本的一种查找方法,从给定的值中进行搜索,从一端开始逐一检查每个元素,直到找到所需元素的过程。 元素序列的排列可以有序,也可以无序。 代码实现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,...
数据的排序
数组的排序前言排序概念 排序是将一组数据,依据指定的顺序进行排列的过程。 排序是算法中的一部分,也叫排序算法。算法处理数据,而数据的处理最好是要找到他们的规律,这个规律中有很大一部分就是要进行排序,所以需要有排序算法。 常见的排序算法分类 排序分为:内部排序和外部排序。 内部排序:是将需要处理的所有数据加载到内存中进行排序; 外部排序:当数据量过大,无法全部加载到内存中,需要借助外部存储(文件、磁盘等)进行排序。 交换排序(冒泡排序、快速排序) 选择排序(选择排序、堆排序) 插入排序(插入排序、希尔排序) 归并排序 桶排序、 计数排序、基数排序 算法稳定性 ...
回顾
标识符 含义:给类、变量、方法、接口取名字的时候使用到的字符序列 组成:大小写字母...
面向对象
面向对象概念 现实生活: 类:抽象的概念,把具有相同特征和操作的事物归为一类 先有实体,再有类的概念 代码世界: 类:抽象的概念,把具有相同属性和方法的对象归为一类 编写顺序:先有类,再创建对象 类的作用:类相当于一个模板,刻画出具有相同属性和方法的对象 类 类中只有属性和方法 属性也叫做全局变量,属性分为成员变量和静态变量 方法分为成员方法和静态方法 1234567891011121314151617public class 类名{ //属性也叫做全局变量,分为成员变量和静态变量 //成员变量 数据类型 变量名; //静态变量 static 数据类型 变量名; //方法分为成员方法和静态方法 //成员方法 访问修饰符 返回值类型 方法名([参数]){} //静态方法 访问修饰符 static 返回值类型 方法名([参数]){}} 对象 创建对象的语法:类名 对象名 = new...
深入类加载机制
深入类加载机制初识类加载过程使用某个类时,如果该类的class文件没有加载到内存时,则系统会通过以下三个步骤来对该类进行初始化 1.类的加载(Load) → 2.类的连接(Link) → 3.类的初始化(Initialize) 类的加载(Load):将类的class文件读入内存,并为之创建一个java.lang.Class的对象,此过程由类加载器(ClassLoader )完成 类的连接(Link):将类中的数据加载到各个内存区域中 类的初始化(Initialize):JVM负责对类进行初始化 深入类加载过程类的完整生命周期 :加载、连接(验证、准备、解析)、初始化、使用、卸载 加载 通过一个类的全限定名来获取其定义的二进制字节流 将这个字节流所代表的的静态存储结构转化为方法区的运行时数据结构 在堆中生成一个代表这个类的Class对象,作为方法区中这些数据的访问入口 注意:...
集合
集合含义 集合是Java API所提供的一系列类,可以用于动态存放多个对象...