软件:一系列按照特定顺序组织的计算及数据和指令的集合
系统软件 应用软件
应用程序=算法+数据结构
机器语言 汇编语言 高级语言
1996 SUN发布JDK1.0
C/S (c客户端) B/S
类 对象 继承 封装 多态
计算机底层都以补码来存储数据
第一章:初识java
oop(面向对象
)
1.java语言特点
健壮性:去除了C语言中的指针 自动的垃圾回收机制(仍会出现内存溢出内存泄漏)
跨平台性:一次编译到处运行
半编译半解释性:实时编译
标识符:数字字母下划线美元符号
数字不能开头,不能包含空格,区分大小写
遇关键字可用下划线串联
包名:小写
类,接口:大驼峰法
变量名,方法名:小驼峰
常亮名:XXX_YYY_ZZZ
关键字:已经定义过的单词
保留字:还没定义,系统预留出来的单词
第二章:变量
1.基本数据类型:
1.1整数类型
byte-----(1字节=8bit -128~127)
short----(2字节)
int-------(4字节,默认类型)
long-----(8字节.声明以L/l结尾不加默认int)
1.2小数类型
float-----(4字节,精确到7位,尾部加f/F单精度)
double--(8字节,双精度,默认类型)
1.3字符类型
char-----(一个字符2字节)
char a = 97 A = 65
1.4布尔类型
boolean-(true,false)
注:char byte short 在运算时会默认转换成int
将double类型转化精度减小
2.引用数据类型:
String
3.进制
二进制:0~1
八进制:0~7
十进制:0~9
十六进制:0~9 10~a 11~b 12~c 13~d 14~e 15~f
4.类型转换:
自动转换: 小转大
强制类型转换: 大转小 ,易出现数据精度缺失
int x = 100;
byte y= (byte)x;
5.运算符:
取余 : % 取余结果看%前的正负号
自增 : ++ ,++x前自增 x++后自增
自减 : -- , -- x前自减 x -- 后自减
r1 中 : x1=3 (x1++ +)=4
*拼接 : (1+2+"1+2"+1+2) = "31+212"
6.赋值运算符 :
x+=10 等同于 x=x+10
-= *= /= %= != ==
7.与(且) 或(或者 ) 非(不是) :
真&&真 == 真 真||假 == 真 非真 == 假 (!)
短路现象:
&& : 第一个表达式为假 结果为假 第二个被短路
|| : 第一个表达式为真 结果为真 ~
按位% 按位| 不会短路
8.三目运算符 : A>B?a:b
9.优先级 :
第三章 :流程控制语句
1.条件语句
1.1 : if语句
1. if
2. if.....else
3. if.....else if..... 如果满足第一个if条件则停止
1.2 : switch语句
2.循环语句:
2.1 : while 先判断再循环 死循环while(true)
2.2:do...while 先循环再判断
2.3:for 死循环:删除条件
2.4:for...each
语法:for(1 2 : 3){代码块}
1是遍历后得到的数据的类型
2是遍历起的数据名 、
3是要遍历的数据
for(Integer i : a) {
System.out.print(i);
}
注:可以使用debug模式进入循环中
3、循环中断
break:终止语句块执行,并退出循环
continu:只跳出被循环,继续执行下一次循环
return :结束整个方法
4、数据类型:
1、基本数据类型
存储的是数据
2、引用数据类型
存储的是内存地址
2.1、数组
2.2、类
2.3、接口
第四章、数组
1、数组:可以看成是多个相同数据类型的组合,实现 对这些数据的统一管理
注:数组长度确后就不能更改
引用数据类型
数组的异常:存储超出(数组越界异常)
java.lang.ArrayIndexOutOfBoundsException
运行时异常:
编译时异常:在java文件---编译---class文件时报错
空指针异常:
冒泡排序:
工具类:
Arrays: sort排序
copyof复制
随机数:1~10
Random rd = new Random();
int x = rd.nextInt(10)+1;
【10,99】随机两位数
公式:(b-a+1)+a
(int)(Math.random( )*(99 - 10 +1) + 10
第五章、方法
main:程序的入口,主方法
方法不能嵌套
static 静态的 可直接调用
void 方法返回值 无返回值
方法的整体结构:
[访问控制符][修饰符] 返回值类型 方法名(形参){
方法体
}
分类:有参方法:say(String name)
无参方法:say( )
有返回值:int say( ){ return 10}
无返回值:void say( )
方法的重载:在一个类中允许同时存在一个以上同名的方法的现象叫做重载
条件:形参列表不同就行,返回值可不同
1、方法的参数的个数不同就可以
say(int x)say (int x,int y)
2、个数相同,类型不同也可以
say (int x) say (Sring name)
注、say (String name1,int name2)
say (int name1, Strng name2) 也可以
方法在被调用时才会执行
return:只能返回一次,但return可以写多个,结束方法
必须与方发声明中的返回值类型匹配
普通方法被对象调用
静态方法被类调用也被对象调用
第六章:面向对象
面向对象:注重结果
1.将所有事情/业务交给不同的对象去完成
2.万物皆对象
面向过程:注重过程/步骤
2.注重过程每一步都按部就班的去操作
主要:类的定义和对象的使用是java语言程序设计的核心
对象是通过类去创造的
概念:把相似的对象 划归一个类定义了通用的属性与方法
总结:类是对象的模板
成员变量:定义在类中(全局变量)
局部变量:定义在方法中
对象:实际存在的某类事物的个体,也称实际例
总结:对象的创建也被称为实例化类
构造方法:为属性赋值用,没有返回值,名与类名一致
创建对象用
注:1.如没写,类class中系统默认追加空参构造器
2. 如果定义了构造器那么系统不会追加
3.构造器在类的实例化是就被调用了
4.一般会默认追加一个空构造
5.类中可创建多个构造器
特点: 1.没有返回值类型
2.名与类名一致
3.不能在方法中用return返回一个值
4.一般访问权限为public
普通方法和构造方法:
1.普通方法:完成业务 构造方法:类的实例化
2.有无返回类型,值
匿名对象:一次性对象,使用完后就变为垃圾
垃圾回收机制:
范围:仅适用于堆内存 栈不需要清理 先进后出
什么时候会变成垃圾?
1.匿名对象使用完后
2.Student s1 = new Student(1001,张三,男,沈阳科技 学院);
s1 = null;
Student s1 = new Student(1001,张三,男,沈阳科技学院);
s1 = new Student(1001,李四,男,沈阳科技 学院);
张三变成垃圾
3.超出生命周期 前99次变为
for(int i = 0;i<100;i++){
person p = new person( );
}
this关键字:当前 代表本类对象
1、引用实例(本类)变量:
当方法中的参数与当前类的成员变量有相同名字时局部变量优先,成员变量被隐藏。
应用情况:
1、方法中变量与属性重名时
2、在一个构造方法中调用重载的其他构造方法
this( )只能在构造器中使用且必须放在第一行
3、也可在普通方法中使用:返回当前对象的引用
第七章:面向对象高级特性
1、封装
2、继承
3、多态
封装:封装就是信息的隐藏,隐藏对象的实现细节,不让用户看到,是将东西包装在一起,然后以新的完整形式呈现出来。
1、私有化属性
2、提供公有的方法存取属性
3、通过toString方法将类存储的地址里的数据转成 String 类型
优点:
1、让使用者只能通过事先定制好的方法来访问数据,可 以方便地加入控制逻辑,限制对属性的不合理操作
2、便于修改,增强代码的可维护性
3、可进行数据检查
继承:(类的扩展)
定义:继承是从父类(已有类)中派生出新的子类,新的子类能拥有父类的属性和方法,并能扩展自己新的属性和方法
person人类(父类)
Student学生类(子类) worker 工人类(子类) Dog(狗类)无法继承
发生继承的条件:
什么情况下两个类可以发生继承关系?
子类可以在任何时候去代替父类进行操作
子类继承关键字extends 单词扩展
java 中类的继承其实就是类的扩展
特点:
1.子类继承父类的所有属性和方法,同时也可以增加自己的属性和方法。
2.Java中只能单继承,也就是说每个类只能有一个直接父类
3.一个父类可以有多个子类
子类实例化过程:
1、 子类实例化时先实例化其父类,然后实例化子类。
2、要先调用父类的构造方法,父类构造方法运行完毕, 才调用子类的构造方法。
3、如果因父类没有空构造产生报错的情况
3.1可以为父类添加一个空构造
3.2使用super
方法的重写:@override
一定存在继承或者实现的关系
方法的重写与重载的区别:
1、重写存在继承或者实现的关系,重载不需
2、重写改变方法体,重载改变形参列表
相同点:但是方法名都不变
使编码更高效
易维护
代码的重用