java从入门到精通(韩顺平视频)笔记整理2

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
处于安全的考虑,类的某个方法不允许修改
类不会被其它的类继承 某些变量值是固定不变的,比如 pi 第15讲 讲题目 1.switch 只能对 int、short、byte 以及枚举类型进行判断,case 后面只能是常量表达是 2.猜拳的 java 程序设计:
有个人 Tom 设计他的成员变量,成员方法,和电脑猜拳,电脑每次都产生一个随机 数0,1,2,0表示石头,1表示剪刀,2表示布。请实现: 第16讲 数组 1.数组是可以存放多个同一类型的数据 2.用法:
13.抽象类里面是可以有实现了的方法的 14.接口中的所有方法都不能有主体,即都不能被实现 15.接口是更加抽象的抽象类!!!! 16.一个类继承抽象类或是使用接口,那么就要实现所有的抽象方法 17.一个类可以实现多个接口 18.接口中可以有变量(但是不能用 private,protected 修饰) 19.接口中的变量本质上都是静态的,而且是 final,不管你加不加 static,所以可以直接使用: 接口名.变量名 20.在 java 开发中,经常把常用的变量定义在接口中作为全局变量使用
3.知道数组的大小:arr.length(成员属性) 4.引用在栈里面,对象在堆里面 5.对象数组:
4.对象、字符串的很多不能用”==”,用的话是表示地址相等,比较字符串的内容是否相等是用 equals 方法
5.
数组可存放同一类型数据
简单数据类型(int,float)数组,可以直接赋值
对象数组在定义后,赋值时候需要再次为每个对象分配空间【即是:new 对象】
13.包的三大作用:区分相同名字的类 当类很多的时候可以很好的管理类 控制访问范围 14.包的打包命令:package com.xiaoming 一般放在文件的开始的地方 15.引包命令:improt 包名
第10讲 访问修饰符 重载 覆盖 1.一个文家中如果只有 public 类,那么这个 public 类可以不用主函数 2. 不想被继承就设为 protected 3.子类最多只能继承一个父类,Java 里面不允许一个子类继承多个父类,C++却可以,如 Java 中一定要呢,就用接口吧 4.Java 的所有类都是 Object 的子类,继承层次数没有限制 7.方法重载:类的同一种功能的多种实现方式,取决于调用者传递的参数 8.方法重载注意事项:
static {
System.out.println("zhixingyicile"); i++; }//会自动执行一次,也只有一次
public Demo9()
{ System.out.println("ffffffff"); i++;
}
public static void main(String args[]) {
访问形式:接口名.变量名 21.一个接口不能继承其它的类,但是可以继承别的接口 22.接口体现了程序设计的多态和高内聚低耦合的思想
第十四课 final 作业评讲 1.实现接口和继承父类的区别: 2.java 是单继承,一个类只允许继承一个父类,这种单继承的机制可以保证类的纯洁性,比 C++的多继承机制简洁 3.实现接口可以看做是对单继承的一种补充 4.继承是层次式的,不太灵活,修改某个类就会打破这种继承的平衡,但是接口就不会,因为 只针对实现接口的类才起作用 5.用接口体现多态: 6.前期绑定:在程序运行之前就进行绑定,由编译器和连接程序实现,又叫静态绑定,如 static 方法和 final 方法,包括 private 方法,它是隐式 fi nal 的 7.后期绑定:在运行的时候根据对象的类型进行绑定,由方法调用机制实现,因此又叫动态绑 定,或是运行时绑定,除前期绑定外的所有方法都属于后期绑定 9.final 概念:final 可以修饰变量和方法 当不希望父类的某些方法被子类覆盖的时,可以用 final 修饰 当不希望类的某个变量的值被修改,可以用 final 修饰 当不希望类被继承时,可以用 final 修饰 10.final 修饰的变量一般用下划线书写 11.如果一个变量是 final 的,那么定义时候必须赋初值 12.final 修饰的变量又叫常量,一般用 XX_XX_XX 命名 13.final 什么时候用:
float a=3.4;是过不去的,在 java 中小数默认是 double(双精度)的
应该写成是 float a=3.4f;
不过可以强制转换:int a=(int)1.2; int b=(int)1.9
5.
int a=1;int b=a+1.2; a 先是往高精度转换,然后赋给 b,就报错 改成 int a=1;double
Demo9 t1=new Demo9(); System.out.println(Demo9.i); Demo9 t2=new Demo9(); System.out.println(i);
} }
4.类方法(静态方法、静态函数):属于所有对象实例的 5.Java 中:类变量(static)原则上用类方法(static)去访问;类方法中不能访问非静态变量 ,就是非类变量,但是普通的成员方法可以访问静态变量(类变量) 使用:类名.类方法名 对象名.类方法名 6.非类变量就是实例变量,属于每个对象自己的 7.Java 面向对象编程的三(四)大特征:封装、继承、多态(、抽象) 8.抽象:把一类事物的共有的属性和行为提取出来,形成一个物理模板,此研究问题的方法就 是抽象 9.封装:把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分 只有通过被授权的操作(成员方法),才能对数据进行操作。 10.封装的访问控制修饰符 11.四种访问控制符: 公开级别:public 受保护级别:对子类和同一个包中的类公开 默认级别: 没有修饰符,向同一个包的类公开,子类不可以访问类中默认级别的元素的 私有级别:用 private 修饰,只有类本身才能访问 公开>受保护>默认>私有 12.
程序员用法:数组定义:数据类型 数组名[]=new 数据类型[大小]; 如:int arr[]=new int[5];
或者是 int[] arr=new int[5]; 或者是 int []arr=new int[5];
数组引用:数组名[下标] 没事找事用法:数组定义: int arr[]; arr=new int[5]; 或者是 int[] arr; arr=new int[5]; 或者是 int []arr; arr=new int[5]; 数组引用:数组名[下标] 古板用法:int a[]={1,2,3,4,5,6,7,8,9,0}; 数组引用:数组名[下标]
第十二讲 多态 1.多态性:访问子类可以通过访问父类: Animal cat =new Cat(); Animal dog =new Dog(); 2.在使用多态的时候,如果有使用覆盖函数,那么被覆盖的方法(即是父类中的的那个相应的 方法)是要存在的。 3. 多态:一个引用(类型)在不同情况下的多种状态,可使代码更加灵活 4.java 允许父类的引用变量引用它子类的实例,是自动完成的
数组大小必须事先指定,如:int x;int a[]=new int[x];是可以的
数组名可以理解为指向数组首地址的引用 数组的下标是从0开始标号的
第十九讲 多维数组 1.多维数组,定义:
语法:类型 数组名[][]=new 类型[大小][大小] int a[][]=new int [2][3] 第二十讲 二进制 位运算 移位计算 1.0的反码和补码都是0 2.我们只会针对有符号的数才讲反码补码 3.java 没有无符号数,换言之,java 中的数都是有符号的 4.在计算机运算的时候,都是以补码的方式运算的 5.按位 与& 或| 异或^ 取反~ 6.~-2=-3(00000010->11111101->11111100->10000011) 7.2&3=00000010 2|3=00000011 ~-5=(1000 0101->11111010->11111011(补码)->00000100)4 8.有3个移位运算符: >>算术右移:低位溢出,符号位不变,并用符号位补由于移动而空出的高位 <<算术左移:符号位不变,地位补0 >>>逻辑右移: 9.记住:对负数操作就要先找补码!!!正数也是,只不过不边罢了。得到的结果如果是正数 就结束,如果是负数就再折腾一下,转变成原码才行。 10.-1移动任意位都是-1 11.1<<2(相当于是*4)=4,-1<<2(相当于是*4)=-4 12. 而对于有符号数,其左移操作还是逻辑左移,但右移操作是采用逻辑右移还是算术右移就 取决于机器了!(算术右移和逻辑右移的区别是:算术右移不右移符号位,即最高位,右移后 前补0还是1取决于符号位的值;逻辑右移执行时将移动符号位,右移后前补0)
Java 从入门到精通笔记
第2讲 1.
变量.数据类型 在 java 里面 int 占4个字节,long 占8个字节
2.
Java 基本数据类型:
整数 :(byte 一个字节 :-128---127 int 四个字节:-2147483648---+2147483647
short 两个字节:-32768---+32767 long 八个字节: )
b=a+1.2; 或者 int a=1;float b=a+1.2f; 就解决了
第4讲 1.
流程控制 switch case 语句中,switch 条件表达式的数据类型应该和后面 case 的类型一致
2.
switch case 语句中,可用的数据类型主要是:byte short int char enum
方法名相同 方法的参数类型,个数,顺序至少有一项不同 方法的修饰符可以不同
方法的返回类型可以不同 另外:
只是返回类型不一样并不构成重载 只是控制访问修饰符不一样不构成重载
第11讲 约瑟夫问题(丢手帕问题) 1.方法覆盖的:子类有一个方法和父类的某个方法名称、返回类型、参数一样 2.方法覆盖注意:
子类的方法的返回类型、参数、方法名称要和父类的一样,否则编译出错 子类方法不能缩小父类方法的访问权限,但是扩大是可以的,子类抛出比父类更少的异常
小数(浮点): float double
布尔 :boolean
字符:char(两个字节,可以存放汉字, char test1 ='中';) (类)
引申到 字符串
3.
在 java 中对 char 进行运算的时候,直接是当做 ASCII 码对应的整数
4.
Fra Baidu bibliotek
数据不能从高精度到低精度的转换 Byte<short<int<long<float<double
一步到位
Cat cat1 =new Cat();
4.
引用传递类似于指针一样
第8讲 this 类变量
1.
this 属于类的对象的而不是属于类的
2.
5this 不能在类的外部使用,只能在类定义时候使用!
3.
可以用类名直接访问静态变量
第9讲 类方法 封装 1.类变量是该类的所有对象共享的对象,一改全改了 2.定义语法:访问修饰符 static 数据类型 变量名 3. public class Demo9 { static int i=1;
第十三讲 抽象类接口 (难点重点) 1.父类方法的不确定性,用抽象类修饰这个方法,abstract。 2.抽象类还是可以一样被继承 3. 当一个类继承的类是抽象的类时候,就要把抽象类中的所有的抽象方法全部方法实现 4.用 abstract 关键词来修饰的时候,一定是抽象类和抽象方法 5.在使用中不多,公司笔试的时候考很多 6.抽象类不能被实例化,只有被继承以后再去实例化 7.抽象类不一定要包含 abstract 方法,就算没有 abstract 方法,也不能实例化它 8.一旦类包含了 abstract 方法,这个类必须声明为 abstract 9.抽象方法不能有主体“{}“ 11.接口不能被实例化 12.接口中的所有方法都不能有主体
第5讲 类与对象
1.
面向对象编程-类与对象
类名首字母大写
类里面的元素叫类的成员变量/属性
2.
类的定义
package 包名;
class 类名 extends 父类 implements 接口名 {
成员变量; 构造方法; 成员方法; }
3.
如何创建对象:
先声明再创建 Cat cat1;cat1=new Cat();
相关文档
最新文档