目录 1.十进制与二进制间的转换 十进制数据转成二进制数据:使用除以2获取余数的方式 二进制数据转成十进制数据:使用8421编码的方式 2. 字节 8个bit(二进制位) 0000-0000表示为1个字节,写成1 byte或者1 B。 8 bit = 1 B 1024 B =1 KB 1024 KB =1 MB 1024 MB =1 GB 1024 GB = 1 TB 3. 常用dos命令 盘符切换命令 盘符名: 查看当前文件夹 dir 进入文件夹命令 cd 文件夹名 退出文件夹命令 cd.. 退出到磁盘根目录 cd\ 清屏 cls 4.JVM ,JRE ,RDK JVM(Java Virtual Machine ):Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的 运行环境,是Java 最具吸引力的特性之一。我们编写的Java代码,都运行在 JVM 之上 Java的虚拟机本身不具备跨平台功能的,每个操作系统下都有不同版本的虚拟机。 JRE (Java Runtime Environment) :是Java程序的运行时环境,包含 JVM 和运行时所需要的 核心类库 。 JDK (Java Development Kit):是Java程序开发工具包,包含 JRE 和开发人员使用的工具。 5.标识符 标识符:是指在程序中,我们自己定义内容。比如类的名字、方法的名字和变量的名字等等,都是标识符。 命名规则: 硬性要求 标识符可以包含 英文字母26个(区分大小写) 、 0-9数字 、 $(美元符号) 和 _(下划线) 。 标识符不能以数字开头。 标识符不能是关键字。 命名规范: 软性建议 类名规范:首字母大写,后面每个单词首字母大写(大驼峰式)。 方法名规范: 首字母小写,后面每个单词首字母大写(小驼峰式)。 变量名规范:全部小写。 6.数据的基本类型 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps1793.tmp.jpg 7.数据类型的转换 自动转换规则 范围小的类型向范围大的类型提升, byte、short、char 运算时直接提升为 int 。 byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double 强制转换 数据类型 变量名 = (数据类型)被转数据值; 浮点转成整数,直接取消小数点,可能造成数据损失精度。 int 强制转成 short 砍掉2个字节,可能造成数据丢失。 8.ASCII和Unicode编码表 在计算机的内部都是二进制的0、1数据,如何让计算机可以直接识别人类文字的问题呢?就产生出了编码表的概念。 编码表 :就是将人类的文字和一个十进制数进行对应起来组成一张表格 9.自增自减 独立运算++X和后++X无差别,混合运算,++X先自增再运算,X++先进行运算再自增; 10.逻辑运算符 &&与 、||或、 !非 && 两边都是true,结果是true 一边是false,结果是false 短路特点:符号左边是false,右边不再运算 || 两边都是false,结果是false 一边是true,结果是true 短路特点: 符号左边是true,右边不再运算 11.成员方法定义 方法必须定义在一类中方法外 方法不能定义在另一个方法的里面 12.+=符号 s=s+1进行两次运算 , += 是一个运算符,只运算一次,并带有强制转换的特点, 也就是说 s += 1 就是 s = (short)(s + 1) 13.常量优化机制... byte b1=1; byte b2=2; byte b3=1 + 2; byte b4=b1 + b2; 分析: b3 = 1 + 2 , 1 和 2 是常量,为固定不变的数据,在编译的时候(编译器javac),已经确定了 1+2 的结果并没有超过byte类型的取值范围,可以赋值给变量 b3 ,因此 b3=1 + 2 是正确的。 反之, b4 = b2 + b3 , b2 和 b3 是变量,变量的值是可能变化的,在编译的时候,编译器javac不确定b2+b3的结果是什么,因此会将结果以int类型进行处理,所以int类型不能赋值给byte类型,因此编译失败 14.三元运算符 c = a > b ? a:b; 15.switch case default: switch语句中,表达式的数据类型,可以是byte,short,int,char,enum(枚举),JDK7后可以接收字符串。 在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。 16.for 和while for 和 while 的小区别: 控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。 在已知循环次数的时候使用推荐使用for,循环次数未知的时推荐使用while。 17.Break 和continue break 使用场景:终止switch或者循环 continue 使用场景:结束本次循环,继续下一次的循环 18.死循环和嵌套循环 死循环:也就是循环中的条件永远为true,死循环的是永不结束的循环。例如:while(true){} 所谓嵌套循环,是指一个循环的循环体是另一个循环。比如for循环里面还有一个for循环,就是嵌套循环。总共的循环次数=外循环次数*内循环次数 19.方法的重载和调用overload 不能用输出语句调用 void 类型的方法。因为方法执行后没有结果,也就打印不出任何内容 参数列表:参数个数不同,数据类型不同,数据类型顺序不同。 重载方法调用:JVM通过方法的参数列表,调用不同的方法。 方法重载:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。 20.参数传递注意 方法的参数为基本类型时,传递的是数据值. 方法的参数为引用类型时,传递的是地址值. 21. Java虚拟机内存划分 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps1794.tmp.jpg 22. 排序求最值 反转排序 for (int min = 0, max = arr.length ‐ 1; min <= max; min++, max‐‐) { int temp = arr[min]; arr[min] = arr[max]; arr[max] = temp; } 求最值 int max = arr[0]; for (int i = 0; i < arr.length; i++) { if (arr > max) { max = arr; }} 占位排序/选择排序 public static void paixu1(int[] list) {
int[] list1 = { 9, 12, 6, 8, 14 };
for (int i = 0; i < list.length-1
; i++) {
for (int j = i + 1; j < list.length; j++) {
if (list[j] > list) {
int st = list;
list = list[j];
list[j] = st;
} } }} 冒泡排序 public static void maopao(int[] s) {
for (int i = 0; i <s.length; i++) {
for (int j = 0; j < s.length -i-1; j++) {
if (s[j] < s[j + 1]) {
int st = s[j];
s[j] = s[j + 1];
s[j + 1] = st;
}
}
}} 折半查询 比较中间索引的值改变最大最小的索引为中间索引 public static int halfSearch(int[] arr, int number) {
int min = 0;
int max = arr.length - 1;
int mid = 0;
while (min <= max) {
mid = (min + max) / 2;
if (arr[mid] > number) {
max = mid - 1;
} else if (arr[mid] < number) {
min = mid + 1;
} else {
return mid;
}
}
return number;
} 23. 面向对象 面向对象和面向过程区别: 面向过程:强调步骤;面向对象:强调对象。 类是对一类事物的描述,是对象的模板,对象是类的实体。是抽象的。 对象是一类事物的实例,是一类事物的具体体现。对象是类的一个实例必然具备该类事物的属性和行为。 定义类:就是定义类的成员,包括成员变量和成员方法。 成员变量:和以前定义变量几乎是一样的。只不过位置发生了改变。在类中,方法外。 成员方法:和以前定义方法几乎是一样的。只不过把static去掉。 创建对象:类名 对象名 = new 类名() 使用对象访问类中的成员:对象名.成员变量;对象名.成员方法。 三大基本特征:封装,继承,多态 24. 成员变量默认值以及和局部变量区别 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps17A5.tmp.jpg 在类中的位置不同 重点 成员变量:类中,方法外 局部变量:方法中或者方法声明上(形式参数) 作用范围不一样 重点 成员变量:类中 局部变量:方法中 初始化值的不同 重点 成员变量:有默认值 局部变量:没有默认值。必须先定义,赋值,最后使用 在内存中的位置不同 了解 成员变量:堆内存 局部变量:栈内存 生命周期不同 了解 成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 25. 封装 封装的操作——private关键字 封装的优化,this关键字和构造方法 使用 this 修饰方法中的变量,解决成员变量被隐藏的问题 当一个对象被创建时候,构造方法用来初始化该对象,给对象的成员变量赋初始值。 26. Scanner和Random Scanner 一个可以解析基本类型和字符串的简单文本扫描器。 例如,使用户能够从 System.in 中读取一个数。 Scanner sc = new Scanner(System.in); int i = sc.nextInt(); 匿名对象 :没有变量名的对象。 Random生成伪随机数 Random r = new Random(); int i = r.nextInt(); 27. ArrayList public boolean add(E e) :将指定的元素添加到此集合的尾部。 public E remove(int index) :移除此集合中指定位置上的元素。返回被删除的元素。 public E get(int index) :返回此集合中指定位置上的元素。返回获取的元素。 public int size() :返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界 28. String 判断相等 public boolean equals (Object anObject) :将此字符串与指定对象进行比较。 public boolean equalsIgnoreCase (String anotherString) :将此字符串与指定对象进行比较,忽略大小写。 获取功能 public int length () :返回此字符串的长度。 public String concat (String str) :将指定的字符串连接到该字符串的末尾。 public char charAt (int index) :返回指定索引处的 char值。 public int indexOf (String str) :返回指定子字符串第一次出现在该字符串内的索引。 public String substring (int beginIndex) :返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。 public String substring (int beginIndex, int endIndex) :返回一个子字符串,从beginIndex到 endIndex截取字符串。含beginIndex,不含endIndex 转化功能 public char[] toCharArray () :将此字符串转换为新的字符数组。 public byte[] getBytes () :使用平台的默认字符集将该 String编码转换为新的字节数组。 public String replace (CharSequence target, CharSequence replacement) :将与target匹配的字符串使用replacement字符串替换。 分割功能 public String[] split(String regex) :将此字符串按照给定的regex(规则)拆分为字符串数组。 29. Static 类变量: private int age; private int sid; public static int numberOfStudent = 0; public Student(String name, int age){ this.name = name; this.age = age; // 通过 numberOfStudent 给学生分配学号 this.sid = ++numberOfStudent; } 静态方法 静态方法调用的注意事项: 静态方法可以直接访问类变量和静态方法。 静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。 静态方法中,不能使用this关键字。 //被static修饰的成员可以并且建议通过类名直接访问。 静态代码块 静态代码块:定义在成员位置,使用static修饰的代码块{ }。 位置:类中方法外。 执行:随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。 30. Arrays类 java.util.Arrays 此类包含用来操作数组的各种方法,比如排序和搜索等。其所有方法均为静态方法,调用起来非常简单。 public static String toString(int[] a) :返回指定数组内容的字符串表示形式 public static void sort(int[] a) :对指定的 int 型数组按数字升序进行排序,Arrays.sort(chars); 31. Math类 public static double abs(double a) :返回 double 值的绝对值。 public static double ceil(double a) :返回大于等于参数的最小的整数,向上取整 public static double floor(double a) :返回小于等于参数最大的整数,向下取整 public static long round(double a) :返回最接近参数的 long。(相当于四舍五入方法)返回整数。 32. 继承 继承好处: 1. 提高代码的复用性。 2. 类与类之间产生了关系,是多态的前提。 继承后的特点: 成员变量: 子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用 super 关键字,修饰父类成员变量。super.父类成员变量名 成员方法: 方法重写override :子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,也称为重写或者复写。声明不变,重新实现。 小贴士:这里重写时,用到super.父类成员方法,表示调用父类的成员方法。 继承后的构造方法 构造方法的名字是与类名一致的。所以子类是无法继承父类构造方法的。 构造方法的作用是初始化成员变量的。所以子类的初始化过程中,必须先执行父类的初始化动作。子类的构造方法中默认有一个 super() ,表示调用父类的构造方法,父类成员变量初始化后,才可以给子类使用。 在每次创建子类对象时,先初始化父类空间,再创建其子类对象本身。目的在于子类对象中包含了其对应的父类空间,便可以包含其父类的成员,如果父类成员非private修饰,则子类可以随意使用父类成员。代码体现在子类的构造方法调用时,一定先调用父类的构造方法。 子类的每个构造方法中均有默认的super(),调用父类的空参构造。手动调用父类构造会覆盖默认的super()。 super() 和 this() 都必须是在构造方法的第一行,所以不能同时出现 继承的特点 Java只支持单继承,多层继承 33. 抽象类 是一种定义类,描述类,类的修饰权限必须是public 1.抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。 理解:假设创建了抽象类的对象,调用抽象的方法,而抽象方法没有具体的方法体,没有意义 2.* 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。 理解:子类的构造方法中,有默认的super(),需要访问父类构造方法。 3.抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。 理解:未包含抽象方法的抽象类,目的就是不想让调用者创建该类对象,通常用于某些特殊的类结构设计 4. 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类。 理解:假设不重写所有抽象方法,则类中可能包含抽象方法。那么创建对象后,调用抽象的方法,没有意义 34. 接口 类的修饰权限也必须是public 默认方法:使用 default 修饰,不可省略,供子类调用或者子类重写。特点,有方法体; 静态方法:使用 static 修饰,供接口直接调用,特点,有方法体; 私有方法:使用 private 修饰,供接口中的默认方法或者静态方法调用。 接扣的多实现 之前学过,在继承体系中,一个类只能继承一个父类。而对于接口而言,一个类是可以实现多个接口的,这叫做接口的多实现。并且,一个类能继承一个父类,同时实现多个接口。 接口中,有多个抽象方法时,实现类必须重写所有抽象方法。如果抽象方法有重名的,只需要重写一次。 接口中,无法定义成员变量,但是可以定义常量,其值不可以改变,默认使用public static final修饰。 *接口中,没有构造方法,不能创建对象。 接口中,没有静态代码块。 35. 多态 前提 1. 继承或者实现【二选一】 2. 方法的重写【意义体现:不重写,无意义】 3. 父类引用指向子类对象【格式体现】 多态的好处,体现在,可以使程序编写的更简单,并有良好的扩展。 向上转型: 父类类型 变量名 = new 子类类型(); 如:Animal a = new Cat(); 向下转型:调用用子类特有方法 子类类型 变量名 = (子类类型) 父类变量名; 如:Cat c =(Cat) a; 变量名 instanceof 数据类型 如果变量属于该数据类型,返回true。 如果变量不属于该数据类型,返回false。 36. Final final: 不可改变。可以用于修饰类、方法和变量。 修饰类:被修饰的类,不能被继承。 修饰方法:被修饰的方法,不能被重写。 修饰变量:被修饰的变量,不能被重新赋值。 37. 修饰权限 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps17B5.tmp.jpg 编写代码时,如果没有特殊的考虑,建议这样使用权限: 成员变量使用 private ,隐藏细节。 构造方法使用 public ,方便创建对象。 成员方法使用 public ,方便调用方法。 小贴士:不加权限修饰符,其访问能力与default修饰符相同 38. 内部类 成员内部类 :定义在类中方法外的类 访问特点 内部类可以直接访问外部类的成员,包括私有成员。 外部类要访问内部类的成员,必须要建立内部类 的对象。 外部类名.内部类名 对象名 = new 外部类型().new 内部类型(); 匿名内部类: 匿名内部类必须继承一个父类或者实现一个父接口。 39.最后点点不写了 class作为成员变量 file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps17B6.tmp.jpg interface作为成员变量 interface作为方法参数和返回值类型 List 接口作为参数或者返回值类型时,当然可以将 ArrayList 的对象进行传递或返回。
|