基础语法
注释
- 单行注释:只能注释一行文字。用法:// + 注释
- 多行注释:能注释一段文字。用法:/+ 内容 +/
- 文档注释:javaDoc.用法:/** + 内容 + */
标识符和关键字
标识符是大小写敏感的。
数据类型
定义字符串用String,它是一个类。
数据类型扩展
整数拓展
进制 二进制0b 十进制0 八进制 十六进制0x
int i = 10;
int i1 = 010;
int i2 = 0x10;
System.out.println(i);
System.out.println(i1);
System.out.println(i2);
浮点数拓展
flout double 少用浮点数进行比较 浮点数有舍入误差 结果为大约数
字符拓展
涉及编码问题 Unicode编码 占两个字节 97=a 65=A 表示范围 U0000-UFFFF
转义字符
- \t 制表符
- \n 换行
布尔值扩展
刚开始用第一种 熟悉了用第二种
boolean home = true;
if (home==true){
System.out.println("======================================");
}//第一种
if (home){
System.out.println("======================================");
}//第二种
代码要精简易读。
类型转换
低————————高 byte->short->char->int->long->float->double
- 值的大小超出数据类型所规定的范围会数据溢出。
- 强制转换 (类型)变量名 高————低
- 自动转换 变量名 低————高
注意点
- 不能对布尔值进行转换
- 不能把类型转换为不相干的类型
- 在把高容量转向低容量的时候强制转换
- 转换时可能存在内存溢出或精度问题 jdk7新特性,数字间可加下划线
变量
定义:可以变化的量 三要素:变量名,变量类型,作用域。
注意
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量名必须是合法标识符。
- 变量声明必须是完整的语句,每个声明结尾要以分号结束。
变量作用域
关键词:static
类变量
实例变量(在类里面,方法外面。变量类型,变量名字)
局部变量(在方法里面,必须声明和初始化值)
变量初始值为0,0.0,0000 布尔值初始值为false 除了基本类型,其余值都为null
常量
final 常量+值
命名规范
- 所有变量,方法,类名,见名知意
- 类成员变量:首字母小写,驼峰原则。除了第一个单词意外,后面的单词首字母大写
- 局部变量:同类成员变量
- 常量:大写字母和下划线
- 类名:首字母大写,驼峰原则
- 方法名:同类成员变量。
运算符
算术:+ - / ++ — 赋值:= 关系:> < == >= <= != instanceof 逻辑运算符:&& || ! 位运算符:& | ^ ~ >> << >>> (了解) 条件:? : 扩展运算:+= -== /= ctrl+d:复制当前行到下一行。 计算时有long型,结果为long型 没有其余为int类型。 cast:转换 取余,也叫模运算。 a++:先输出a,再自增1 ++a:先加一再输出a
Java doc
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
流程控制
- 用户交互Scanner
- 类名 java.util.Scanner
next()
nextLine()
//获取输入字符串
hasNext()
hasNextLine()
//判断是否还有输入数据
- 数组
- 声明一个数组
例:int[] nums; - 创建一个数组
例:nums = new int[10]; (中括号里是数组的大小数量) - 获取数组的长度
例:nums.length
- 声明一个数组
内存
堆
- 存放new的对象和数组
- 可以被所有线程共享,不会存放别的对象引用
栈
- 存放基本变量类型(也包含这个基本类型的数值)
- 引用对象的变量(会存放这个引用在堆里面的具体地址)
方法区
- 可以被所有线程共享
- 包含了所有的class和static变量
错误
- ArrayIndexOutOfBoundsException:(数组下标越界异常)
数组三种初始化状态
- 静态初始化 int[] a={1,5,2,4,6,3}; 一旦创建长度跟括号内元素个数有关,且确定。
- 动态初始化 int[] a=new int[10]; a[1]=8; a[2]=2;
- 数组的默认初始化 初始化值为0;
数组四个基本特点
- 其长度是确定的。数组一旦被创建,它的大小就不可以被改变。
- 其元素必须是相同类型,不允许出现混合类型。
- 数组中的元素可以是任意数据类型,包括基本类型和引用类型。
- 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。
小结
- 数组是相同数据类型(数据类型可以为任意类型)的有序集合。
- 数组也是对象,数组元素相当于对象的成员变量
- 数组长度是确定的,是不可改变的。如果越界,则报错:ArrayIndexOutOfBoundsException:(数组下标越界异常 )。
面向对象
初识面向对象
- 物以类聚,分类的思维模式
- 属性+方法=类 对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。
什么是面向对象
- 面向对象编程(oop)
- 本质:以类的方式组织代码,以对象的组织(封装)数据
- 抽象(类似提取)
- 三大特性
- 封装
- 继承
- 多态
- 从认识来考虑,先有对象后有类
- 从代码运行考虑,先有类后有对象
类与对象的关系
类是一种抽象的数据类型,它是对某一类事物整体描述或定义,但是并不能代表某一个具体的事物 对象是抽象概念的具体实例
创建与初始化
- 使用new关键字船创建对象的时候,除了分配内存空间,还会给创建好的对象进行默认的初始化以及对类中构造器的调用
- 构造器特点:
- 必须和类名字相同
- 必须没有返回类型,也不能写void
- 构造器的两个作用
- 使用new关键字,本质是在调用构造器
- 有参构造:一旦定义有参构造,无参就必须显示定义
定义了有参构造,如果想使用无参构造,显示的定义一个无参的构造。
创建对象内存分析
内存图:
小结:类与对象
- 类是一个模板,抽象,对象是一个具体的实例。
- 方法,定义,调用
- 对应的引用:
- 引用类型:基本类型(8)
- 对象是通过引用来操作的:栈----》堆
- 属性:字段,成员变量。
- 默认初始化:
- 数字:0
- char:u0000
- boolean
- 引用:null
- 赋值:
- 修饰符 属性类型 属性名=属性值
- 对象的创建和使用
- 必须使用new关键字创造对象 构造器
- 对象的属性
- 对象的方法
- 类
- 静态的属性 属性
- 动态的行为 方法
封装
- 该露的露该藏的藏
程序设计要求“高内聚,低耦合”。高内聚指类的内部数据操作细节自己完成,不允许外部干涉;低耦合指尽暴露少量的方法给外部使用。 - 封装(数据的隐藏)
通常,应禁止直接访问一个对象中数据的直接表示,而应通过操作接口来访问,这称为信息隐藏
相关关键字:private(私有)
set(赋值) get(获得)
封装的作用
- 提高程序安全性,保护数据。
- 隐藏代码的实现细节
- 统一接口
- 增加系统可维护
一句话:属性私有 get/set
继承
super注意点:
- super调用父类的构造方法,必须在构造方法的第一个
- super必须只能出现在子类的方法或者构造方法中
- super和this不能同时调用构造方法
与this的区别:
代表的对象不同 :
this:本身调用这个对象
super:代表父类对象的运用
前提
this:没有继承也可以使用
super:只能在继承条件下使用
构造方法
this():本类的构造
super():父类的构造