Java 入门 变量 运算符
Java 的基本知识
这部分自行百度, 百度百科会有详细解释, 了解 java 语言的特点,
JDK 是整个 java 开发的核心, 它包含了 JAVA 的运行环境 (JVM+Java 系统类库) 和 JAVA 工具.
jre:java 的运行环境 . 运行 JAVA 程序所必须的环境的集合, 包含 JVM 标准实现及 Java 核心类库.
jvm:java 虚拟机, 计算机设备的规范, 是一个虚构出来的计算机
jcp: 是一个开放的国际组织, 由 Java 开发者以及被授权者 发展和更新
API: 应用程序的编程接口 预先定义的函数
提供应用程序与开发人员基于某软件或硬件访问数据的能力, 而又无需访问源码; 无需了解内部工作细节
oop:Object Oriented Programming 面向对象编程
ooa:Object-Oriented Analysis 面向对象分析方法
ood: Object-Oriented Desig 面向对象设计
其主要作用是对 OOA 分析的结果作进一步的规范化整理, 以便能够被 OOP 直接接受.
Java 特点面向对象 简单 分布式 健壮性 安全 可移植 多线程 动态性 编译和解释性 高性能
Java 的变量
Java 的变量, java 中的变量主要包括 8 种, byte short int long char double float Boolean
相关的封装类型 长度及范围如下:
数据类型 | 内存 | 封装类型 | 范围 |
byte | 8 位 | Byte | -128 127 |
short | 16 位 | Short | 32767 -32768 |
int | 32 位 | Integer | 2147483647 -2147483648 |
long | 64 位 | Long | -9223372036854775808 9223372036854775807 |
浮点类型
数据类型 | 内存 | 封装类型 | |
float | 32 位 | Float | 1.4E-45 3.4028235E38 |
double | 64 位 | Double | 4.9E-324 1.7976931348623157E308 |
** long 定义时在后面添加上 L l
** float 定义时在后面添加上 F f
** double 定义时在后面添加上 D d
char
数据类型 | 内存 | 封装类型 |
char | 16 位 | Character |
放在单引号内 存放 unicode 可以与 unicode 的编码相互转换
- A=65 ; Z=90
- a=97 ; z=122
- boolean
数据类型 | 内存 | 封装类型 |
boolean | 8 位 | Boolean |
直接赋值和逻辑判断赋值
还有一中数据类型, String 但 string 不是基本数据类型,
变量名
变量先声明, 赋值, 再使用 (类中实例变量不用, 在创建对象时, 会初始化为相关数据类型的默认值, 方法里的局部变量必须先声明才能使用)
变量名: 只能有字母 数字 下划线 $ 组成, 不能以数字开头, 不能使用关键字作为变量名, 变量名小驼峰, 第一个字母小写, 后边大写
变量类型的转换, 由低转高, 高转低会丢失精度, char 类型与整型的转换,
常量 final 一次赋值不能更改 常量名大写单词使用下划线隔开
Static 使用类名调用, 也可以使用对象调用 关于 static 的机制这里不多做说明, 后边可能回详细介绍
运算符
在 java 中的运算符分为以下几种
算术运算符: + - */ % + -- += -= *= /= %=>> << 自增 (自减) 运算在表达式中的 的先后循序 i++ 先使用 i 的值
++i,i 先执行运算, 再执行外围表达式
关系运算符 <> <=>= != == 运算结果是一个 boolean 类型的结果
逻辑运算符
&& & 与 && 具有短路效果 第一个表达式为 false, 就不会执行第二个表达式
|| | 或 || 具有短路效果 第一个表达式为 true, 就不会执行第二个表达式
!
三元运算符:
A?b:c A 语句 为真 返回 b 否则 c
流程分支
流程控制, if 语句 和 switch 语句
if(condition){......} /if(condition){......}else{......}/ if(condition){......}else if(){......} else{......}
开关语句 switch (){case ......;break;default ......;break;}
没有 break; 会执行下一句, 直到 break 语句
default 的位置无关
case: 表达式唯一
switch 语句中的变量类型可以是: byte,short,int 或者 char. 从 Java SE 7 开始, switch 支持字符串类型了, 同时 case 标签必须为字符串常量或字面量.
循环处理
循环 for 循环 while(condition){....} do{.....}while(condition);
- For([起始条件];[循环条件];[步长]){
- .....
- }
起始条件, 循环条件, 步长可能没有表达式, 一个或多个
While 与 do while 的条件都是一个结果为 boolean 的表达式,
do while, 先执行一次循环体
面向对象
在 java 中, 类封装了属性和方法来描述一类事物的特性和行为, 通过类的实例化来创建对象.
权限修饰符 class [className]{
- // 属性
- // 方法
- }
构造方法, jvm 会默认提供一个无参的构造方法, 用户自定义其他有参的构造方法时需要写出无参构造
类名 对象 = new 类名 ();
对象. 属性;// 赋值或访问
对象. 方法;// 调用方法
类与对象的关系:
类是对象的类型;
对象是类的实例
类是模板; 对象是模板创建的副本
一个类创建的对象: 彼此不共享 (static 修饰的变量所有对象共享)
new 是的对象的实例化
属性: 属性是对类型的特征描述; 本质上是变量; 由类进行封装 (打包)
this 在构造方法间相互调用, 但是自能在第一行,
this 代表当前对象, 可以调用其他实例方法, 在方法中解决 全局变来量与局部变量的重名问题,
方法重载
在同一类中: 有两个两个以上的方法, 方法名相同; 但形势参数参列表不同 (个数或类型不同)
注意
构造方法和成员方法都可以重载
调用时根据方法的形参列表匹配
与返回值类型和权限修饰符无关
static 修饰符的含义相关知识
static 的含义: 在 java 的类的加载过程中通过 static 关键字, 告知内存分配机制进行优先分配内存地址 (空间), 即可以提前获取内存地址
相关知识
不仅可以修饰方法和变量; 还可以修饰代码块同时代码块只执行一次 (初始化)
可以使用类名直接调用类方法或者类变量
传统方式使用对象名调用 : 对象名. 方法 (); 对象名. 属性方法 ()
直接方式: 类名. 方法 (); 类名. 属性方法
static 不能修饰局部变量
一般情况下, 类方法不能访问实例变量 也能访问实例方法
一般情况下, 实例方法中不推荐使用类变量
继承
在代码上使用 extends 实现继承关系
子类在前 父类在后 public class 子类 extends 父类
继承具有传递性
在 java 中, Object 是左右类的祖先, 一般情况下称为超类或基类, 所有子类直接或间接的继承 Object 类;
子类不能继承父类的私有'财产'(private)
不能继承父类的构造方法
抽象类和抽象方法特点, 关系
使用 abstract 修饰的类是抽象类, 使用 abstract 的方法抽象方法
抽象类不能实例化, 不能创建对象, 但有构造方法
抽象类与是否存在抽象方法无关
抽象类存在子类, 并子类重新是抽象类中的抽象方法, 子类必须全部重写父类的所有抽象方法, 否则子类必须定义为抽象类
抽象方法: 只有方法名, 没有方法体; 没有功能的具体实现
二者的关系: 抽象类中不一定含有抽象方法; 抽象方法存在于抽象类或接口中
方法的重写满足条件
方法的重写基于继承的条件下
子类根据开发需求重写 (覆盖) 父类的方法
重写满足要求
重写的方法名与被重写的方法名一致
参数列表也相同
返回值类型相同, 或者是其子类
权限修饰不能缩小 (public>protected>default>private)
如何使用 super 调用父类的属性, 方法, 构造方法
首先, 子类具有调用父类属性, 方法的权限
使用关键字 super 调用父类的元素
super. 属性名 》》》super.name
super. 方法名 (形参列表)
※ super() 或 super(形参列表) // 调用构造方法时, 必须放在子类构造方法的第一行 调用的是 (直接) 父类的构造方法 有时 可以省略
接口
自定义一个实现类, 使用 implement 可接多个接口名称, 使用 "," 号隔开
推荐该实现类实现所有接口中的所有抽象方法, 否则将实现类定义为抽象类
一个类在实现一个接口或多个接口的同时也可以继承一个类;
public EmpDaoImpl extends Object implements EmpDao1 ,EmpDao2{......}
接口的特性
接口支持默认和 public 两种权限
接口的命名规范与类相同
接口可以继承 (extend) 一个或多个接口 (使用逗号分隔), 但不能继承类
接口中不能定义变量, 只能定义常量 (系统默认会加上 public final static )
接口中的方法都是全局抽象方法 (系统默认添加
根据 JDK 的版本, 动态决定接口的新特性
1.8 后接口可以定义实例方法 使用 default 修饰,
接口中只能定义常量, 默认添加 public final static
多态
在继承的条件下: 具有多种行为 (形态) 表现的集合特征
实现多态
继承的存在
子类重写父类的方法
向上转型
定义方法时, 形式参数类表类型的定义; 推荐使用父类 (object) 类作为形式参数的类型
定义方法时, 返回值类型的定义: 推荐使用父类 (Object) 作为返回值类型或者 Object[](对象数组)
判断一个对象是否属于某个类 (型) 或接口的引用
一般情况下结合逻辑判断语句使用, 返回 boolean 类型
- if(对象名 instanceof 类){
- }
- else{
- }
好处: 体现代码的健壮性通常与强制类型转换
来源: http://www.bubuko.com/infodetail-2823582.html