1.java的数据类型
a 基本数据类型(八大):
- 整数相关的:byte(1个字节8bit, -128~127), short(2个字节16bit, -2
15
~215
-1), int((4个字节32bit, -231
~231
-1), long(8个字节64bit, -263
~263
-1) - 浮点数相关的:float(4个字节32bit,-3.4 * 10
38
~3.4 * 1038
),double(8个字节64bit, -1.7 * 10308
~1.7 * 10308
)默认是double类型 - 字符相关的:char(2个字节16bit,单引号)
- 布尔相关的:boolean(2个字节1bit,true,falsse)
b 引用类型: - 类,接口,数组,String
2.命名规范
- 变量名规范:字母、数字、_ 、$ 组成,首字母是非数字
常量或final修饰的变量名全大写 - 方法名规范:遵巡变量名规范,首字母小写,后面的驼峰式命名,通常是动词。
方法名、参数名、成员变量、局部变量都统一使用
lowerCamelCase风格,必须遵从驼峰形式。 - 类命名规范:遵巡变量名规范,首字母大写,后面的驼峰式命名
- 包命名规范:遵巡变量名规范,全小写,不能有空格
所有的名字都不能是关键词,goto、const是保留字符,也不能用
3.操作符
- 算术运算符:+ 、 - 、 * 、 / 、 % 、 ++ 、 -- 、位运算符(& 、|)
- 比较运算符:> 、< 、== 、>= 、<=
- 逻辑运算符:发生短路(&& 、||),不发生短路(& 、|)
- 三目运算符:表达式?值1:值2
4.数据类型之间的操作符运算转换关系
类型关系
- 自动转换情况:
两种类型兼容:char a='c'+1;//int和char是可以兼容的
把低级赋值给高级:float f=20;
- 强制转换情况:
数据的溢出:byte b=(byte)130;//b=-126
高级转化成低级:int n=(int)3.14;//n=3
char a='c'+1;//输出a 为d,输出的'c'+1为100
先把字符c转换成int类型进行计算,之后把int赋值给char
char a=98;//输出a是字符b
int k=2147483647;i++;
内存溢出也不会报错,因为++,--是会做预处理的。
byte i=127;i=i+1;
报错,i+1已经溢出了,超出了范围则默认是int类型
5.面向对象
- OO(object oriented) 面向对象
- OOP(object oriented programming) 面向对象的编程
- OOA(object oriented Analysis)面向对象的分析
- OOD(object oriented Design)面向对象的设计
面向对象:注重类的属性与行为,参与者一般是一个指挥者 如JAVA
面向过程:注重程序的流程 数据结构与算法 参与者是程序的本身 如C
面向过程是面向对象的基础,面向对象依赖于面向过程
6.类的介绍
把具有相同属性或行为的一系列的事物定义成一个类
局部变量是必须先赋值再使用的
类的属性可以不用先赋值,它有默认的赋值:
- 基本类型属性:
byte short int ——>0
long ——> 0L
char ——> \u000 显示为一个矩形框
float double ——>0.0
boolean——>false
- 引用类型默认值——>null
7.面向对象的特征
- 抽象:
- 继承:
- 封装:通过类的修饰符来实现
- 多态:方法的重载、重写(覆盖)、子类对象赋值给父类
1)修饰符(三大类修饰符):
- 访问修饰符:public | protected | default | private
- static :静态的
- final : 最终的 不能改变的量 常量
final属性:只能赋值一次,变量名大写
final方法:子类不能对这个类重写,可以重载
final类:不能被继承 ,无后代
static 静态的 不依赖对象,只依赖类 内存分配中只有一份,存放于静态池中
static属性:静态属性,所有对象共享,一个对象修改了会影响另外一个对象的访问
static方法:静态方法在一开始就在静态池中分配好了内存,普通方法是随对象产生才有内存的,所以静态方法中不能有普通属性和方法,而普通方法可以访问静态属性和方法
类的方法和属性的访问权限:
抽象类的的访问权限:
抽象类之所以为抽象类,是因为它是作为父类来使用的,是等待子类去实现的,而类中 private的权限只能是自个访问自个,所以在抽象类中抽象方法只有public,protected,default三种访问权限。
接口的访问权限:
所有成员的属性都为public static final,也就是说接口中声明的变量都是常量,不能被继承
所有方法的访问属性为public, 所以实现接口中的方法必须标识为public,否则编译出错
2)方法的重载(overlode)和重写(override 覆盖)
重载:同一个类中,方法名相同,参数列表不同(参数个数或类型)
返回类型不用管
重写(覆盖):发生在继承关系中,对父类的方法进行重写
要求:
- 方法名相同
- 参数列表相同
- 访问修饰符不能低于父类的访问修饰符
- 抛出的异常不能大于父类的异常
- 返回值类型子类的可以隐式转换成父类
域的隐藏:
- 方法的参数名与类的域(属性)重名,属性名会默认隐藏
- 继承关系中同包下的子类对父类的private属性隐藏,不同包下的子类对父类的private default属性隐藏
- 向上类型转换时,子类自身属性自动隐藏
方法的参数传递:
- 基本类型数据和String (new String)传递的是值的副本,原来的值不变,副本调用方法
- 除String外的引用类型传递的是值的地址,就是原来的值在调用方法
3)类的构造器(构造方法)
构造器是一个特殊的方法,系统默认自带一个无参构造器,如果提供了构造器,则默认的构造器失效,要使用无参构造器就手动添加
构造器的作用:创建对象的时候给属性初始化
this();
//在构造器中调用当前类的默认构造器
super();
//在构造器中调用父类的构造器
super.方法();
//调用父类方法
构造方法不能被继承。
子类初始化时一定会调用父类构造器的,没有的话默认调用(super)父类无参构造器,所以一般父类有参构造时手动添加无参构造
4)类的执行顺序
一个类中:
- 静态(static)代码块(静态方法、静态属性)
- 成员属性方法
- 构造方法(要给属性赋值)
继承关系的类中:(先有父母再有子女)
- 父类静态 子类静态
- 父类普通代码块 父类构造
- 子类普通代码块 子类构造
5)类的类型转型
- 向上转型(caseuper):子类对像赋值给父类,子类自身的属性方法被隐藏
- 向下转型(casedown):父类对象赋值给子类,必须先向上转型,才可以向下转型。
Animal a=new Dog();//向上转型,自动
Dog d=(Dog)a;//向下转型,强转
网友评论