Main函数的作用,可以保证类的准确的运行,程序的入口
Javac是运行,java是编译
类的首字母大写:
标示符:由26个英文大小写组成;数字:0-9符号_$字符组成 定义合法:数字不可以开头,不能使用关键字;Java严格区分大小写,尽量见名之意
注释: // // / 文档注释-说明书*/ (注释不编译到字节码文件中) 注释作用:注解说明\调试程序\面试的时候—开发代码必须写注释,写程序也必须写注释.(新手老手的区别就是写不写注释),代码就是人的思想中的体现形式,
写代码的时候: 先写多行注释,需求 怎么想的-思路(步骤写)
1. 定义一个类,java程序都是以类的形式存在的,,累的形式就是字节码文件的最终体现
2.定义主函数,让类可以独立运行
3.字样所需要的输出语句
步骤: 1.用class关键字来完成类的定义,并起一个阅读性强的类名
2.主函数:固定格式,
3.输出语句
常量 :
整数常量:所有整数
小数常量:所有小数
布尔型数据,较为特殊;是true或false
字符常量:将一个数字字母或者符号用’’单引号表示
字符串常量:将一个或多个字符用双引号表示;
null常量:只有一个null;
整数的四种表现形式:
二进制:0 1满二进1
八进制: 0-7满8进1,用0开头:就是二进制位 3个二进制位就是一个八进制位
十进制:0-9 满10进1
十六进制 0-9 A-F 满16进一 用0x开头 A-10 其实就是二进制中的四个二进制为一个十六进制位
负数的二进制的表现形式:其实就是这个数的正数二进制取反加一(负数的二进制位是最高位)
修饰符(public\static) 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2)
{
执行语句;
return 返回值;
}
- 属性:是对象所具有的特征
- 方法:是对象具有的行为。
- 类:把对象共性信息归纳,且用语言描述出来,是对象抽象出来的
- 对象:具体存在的
- 接收数据:
Scanner input = new Scanner(System.in);(需要导包) - Switch语句中,括号里只能是整数或自符类型的数据。
<switch(result){
case 1:System.out.println("****");break;
case 2:System.out.println("\\");break;
case 3:System.out.println("####");break;
default:
System.out.println("选择有误,即将退出");
//退出
System.exit(1);
}> - 退出语句:
System.exit(1); - 随机数:
int result = (int)(Math.random()*10)%3+1; - 封装:把一些东西包装在一起。
- 抽象:由一堆对象抽取一个类的过程。
- 画类图:
类名
属性(“+”表示公有的,public类型,“—”表示私有的privat类型)
方法名
12:构造方法:方法名和类名完全一样,无返回值,通常是public访问修饰,给类内部成员进行初始化。
如果Dog类是第一次使用
《1》 类加载器加载Dog类到内存,产生Dog类的type类对象。
《2》 在栈中给对象变量dd分配内存。
《3》 在堆中给对象分配内存
《4》 对堆内存基本类型属性,进行清零操作。
《5》 执行构造方法中的代码,对属性进行初始化。
《6》 将堆内存首地址赋给对象变量dd。
构造方法的潜规则:
《1》定义一个类,不写构造方法,编译器会自动,添加一个无参无功能的构造方法。
《2》如果定义一个带参数构造,编译器不在自动添加无参无功能的构造方法,构造参数的函数名不可与属性名一致,否则不会在构造方法中赋相同的值,如同名this.name=name
This指将来类执行的代码。
《3》.(构造方法)子类构造方法中的第一条语句,如果没有使用super感觉真显示调用父类构造,默认调用父类的无参构造。
《4》(构造方法)构造方法地 名字必须和类名完全相同,没有返回类型
13.继承:不劳而获
关键字 子类 extends 父类
super在子类调用父类必须放在构造方法的第一条语句。
*********一般,在父类加一个无参数无功能的构造方法
隐士规则:
《1》父类的方法,定义的了 有参数的构造方法,无参数的构造方法不生效
《2》.子类继承父类后的构造方法中第一条语句会默认调用
步骤:
子类(如果子类和父类有参数,那么构造器的第一条必须是super语句后加参数变量------父类有子类没有,子类构造器的第一条语句super后跟常量,,,,,子类和父类没有参数的话,不需要使用super)
《1》在内存中的字段分配空间
《2》给子类里的属性初始话
《3》实例化父类对象,然后是主类对象
包的作用:限制访问范围;防止命名冲突
继承规则:
《1》.如果一个类没有标明继承自那个父类,默认是继承自Object,
《2》实例化子类对象时,必然会先实例化出一个父类对象,然后再父类对象的基础上进行的扩展出一个子类对象
《3》(构造方法)子类构造方法中的第一条语句,如果没有使用super感觉真显示调用父类构造,默认调用父类的无参构造。
《4》(构造方法)构造方法地 名字必须和类名完全相同,没有返回类型
《5》子类不能继承父类的三方面内容————(private成员,子类与父类不在同包父类使用默认访问权限的成员不能继承/构造方法)
《6》.遵循里氏替换原则的两个类才可以建立继承关系,
14.方法重写(子类和父类有相同的方法)的规则:
《1》.方法重写是在两个类中(父与子)
《2》.方法名称相同,参数列表相同,返回类型相同或是其子类,访问修饰符的范围可以扩大但是不能缩小。
重写之后看重写对象new的是谁 ,调用的就是谁。
《3》方法绑定是在程序运行的时候进行的,根据new的对象是谁就调用谁的方法,属于动态绑定。
访问修饰符:private:在本类 调用
默认的friendly在本类 同包 调用
Protect在本类 同包 子类 调用
Public在本类 同包 子类 其他类 调用。
15.方法的重载
《1》方法重写是在一个类中
《2》方法名称相同,参数列表不相同,(参数个数不同,对应位置上的参数类型不同)
重写之后看重写对象new的是谁
《3》方法绑定是在程序编译的时候进行的,根据参数列表不相同决定 调用谁的方法,属于静态绑定。
16.抽象方法:
1。没有实现的方法(有大括号就是实现的。没有就是没有实现的方法大括号)去掉后, 在public后加 abstract关键字,规则是:如果一个方法有抽象方法的时候,这个类必须存在abstract必须定义成抽象类;
总结
《1》没有实现的方法,(即没有大括号的方法{ })叫抽象方法,必须加abstract
《2》包含抽象方法的类必须定义成抽象类,但是抽象不一定是包含抽象方法。
《3》. 抽象方法的意义:在于给子类制定标准和规范。。用来约束子类
标准和规范体现在:一方面体现在 子类中的 方法重写上
2217.抽象类作用:规则
《1》一个子类继承了抽象的父类,子类要么实现(即重写父类中所有的抽象方法)父类中所有的抽象方法,否则子类必须也必须定义成抽象类
《2》抽象类不能实例化(就是不能new对象)
final关键字:不允许继承父类,在类的class前加final,,不允许继承属性在void前继承属性,,属性或方法里的常量,在类型前加final关键字,
instanceof 判断对象是否是类的对象
开辟原则:对原来的代码封闭,对于新的代码开放
18.多态:
《1》定义;相同的对象对同一个方法,表现出不同的行为
《2》表现实现:方法重载、方法重写,
- 接口:USB接口是一组规范,就是一组规范或标准。抽象的类
什么是面向接口编程?
规则:(也就是说改一下关键字class-interface;里面的方法都是抽象的但是没有abstract关键字;不加public也是公共的)《1》.两方面理解:一方面从类的角度来说是是一组纯的抽象类(有abstract,就是这个类的方法都是抽象方法,即不存在非抽象的类,但是 里面都是抽象的方法,但是没有关键字abstract)接口里所有的方法都是公共的加不加关键字public都可以
从意义的角度来说:接口就是一组规范或标准,
《2》(implements 关键字)类实现接口
a.变相的实现多继承(因为只允许有一个父类)
b。可以将任务分解,有利于实现团队合作,
《3》接口是体现的是一种能力,设实现了接口,谁具备了这种能力
面向接口编程
一个类只能有一个public,继承一个父类,但是可以实现多个接口和抽象类的区别?
抽象类:只能是这个类的本身或者子类才能传过来;
接口:只要实现接口的类都能传过来;
接口的好处
1.变相的实现多继承,
2.可以将任务分解,有利于实现团队合作,
抽象类和借口的区别
类里面的参数,传的时候传类就是类的本身或者是子类对象,接口是只要是接口的都能传过来
3.接口体现的是一种能力
20集合:
Collection:接口存储一组不唯一,无序对象
List接口存储不唯一,有顺序(插入对象)的对象
Set接口存储一组唯一,无序的对象
Map接口存储一组键值对象,提供key和value的映射…有HashMap和TreeMap
List的get(int index)方法获取元素
Map的get(Object key)方法获取元素
Iterator的next()方法获取元素
HashMap(集合) 定义的size用来统计元素个数 key是set。values是Coleection 是object类型
Map co = new HashMap();
co.size();统计字典的元素个数
co.get ("CN")存放的是object类型的键,想获取某一元素的值
co.containsKey("FR"),判断是否存在某一元素。
co.remove("FR");
co.keyset();、、键集合 返回字符串
co.values();//值集合字符串
co.clear();全部清除
co.isEmpty ()判断是否为空
list的get(int index)方法获取元素,Map的get(Object key)方法获取元素,iterator的next方法获取元素
Vactor(保证安全/多线程)和ArrayList(提高速度,单线程,重效率轻安全)的异同:vactor扩容,默认增加一倍,ArrayList增长50%
Hashtable(安全)和HashMap(无安全)的区别:
Hashtable继承Directionary类,HashMap实现Map接口
Hashtable线程安全,HAshMap线程非安全;
Hashtable不允许null值,HashMap允许null值
迭代器:实现Iterator接口的都称为迭代器(iterater遍历一个集合、for each循环)
接口的方法:Boolean hasnext()是否存在下一个元素,返回bool值,Object next():返回要访问的下一个元素
泛型:类型不确定;,List<T>(类定义不确定,实例化的时候就确定了) 由类产生对象的时候
读取便利的时候代码有变化不用强转,对于test2的检查,就不用强转
LinkedList<Dog> dogs = new LinkedList<Dog>();
早期java利用jdbc---odbc 桥接的技术,现在是纯的jdbc操作数据库
程序员调用的接口与类 如:
DriverManager类 Connection接口 Statement接口 ResultSet接口