java程序以文本形式存在,必须经过编译生成字节的代码类文件后才能运行。
cmd
javac OneJavaApp.java
javaOneJavaApp 在此步骤执行时,会自动添加.class后缀
1.1 常量变量
final float PI=3.1415926F; | final为声明为常量,float常量为浮点型 |
变量名 | 字母数字下划线美元符,允许使用汉字作为变量,对大小写敏感 |
成员变量_静态变量 | 用static修饰的变量,有效范围是整个类 |
成员变量_实例变量 | 和静态变量相对的,有效范围是整个实例 |
局部变量 |
|
1.2 基本数据类型
1.2.1 基本类型
数值型:整数类型(byte,short,int,long)
十进制,八进制,十六进制
十进制byte、八进制short、十六进制int、long超过16进制范围,末尾用l或者L声明
0x160000000L
浮点类型(float,double)
56.78 | 十进制 | 科学计数法 |
float | 56.78F | 5.678E1F |
double | 56.78 | 567.8E-1 |
字符型:char
布尔型:boolean
1.2.2 类型转换(有可能造成数据丢失)
自动类型转换 byte bid = 16
强制类型转换 byte bid = (byte)id;
1.2.3 Java运算符
赋值运算符: =
算术运算符:+、-、*、/、%
关系运算符:>、<、>=、<=、==、!=
逻辑运算符:逻辑与 &&或者&
逻辑或 ||或者|
逻辑非 !
计算运算符两边的表达式时存在着差别分为
短路(左边阻塞右边不执行)、非短路
&&和||是短路运算符,使用短路运算符可以提高代码的安全性,&|是非短路运算符
位运算符:
按位与&、按位或|、按位异或^、按位取反~
符合赋值运算符 &=
左移运算符<<、右移运算符>>、无符号右移运算符>>>
其他运算符:
自增运算符++
a++ | 先进行算数运算,后进行自增 |
++a | 先进行自增,后进行算数运算 |
自减运算符--
?:根据?左侧的布尔值,返回:两侧的值
[]用于生命访问数组的元素
1.3 Java编码规范
1.3.1 命名规则
常量 | 每个单词用下划线隔开,英文字母大写 | MAX_VALUE |
变量 | 英文字母小写 | add |
方法 | 首字母小写, 多个单词构成其后首字母大写 | addData() |
包 | 前缀全由小写字母构成 | java.io |
类 | 使用名词,首字母大写,其后首字母大写 | RandomAcessFile |
接口 | 与类的相同 | FileFileter |
1.3.2 代码编写规则
声明变量独占一行
语句以;结束
返回语句 return Value 形式 return (2);
1.4 Java程序注释
单行注释 | //注释内容 |
多行注释 | /*注释内容*/ |
文档注释 | /**注释内容*/ |
2.1 算法和逻辑控制
2.1.1 if_else语句
if-else条件语句 | if(条件表达式){ 语句序列1 }else{ 语句序列2 } |
if-else if-else多分支语句 |
|
2.1.2 switch多分支语句
switch( 产生条件 ){
case0: 语句序列1 ;
[break;]
case1: 语句序列2 ;
...
default: 语句序列 n
[break;]
}
//短路和非短路
pbulicclass cal{
publicstatic void main{
inta = 1;
intb = 2;
boolean result= ((a=9+3)<10)&&((b=8-3)>4);
System.out.println("result="+ result);
System.out.println("a="+ a);
System.out.println("b="+ b);
booleanresult = ((a=9+3<10)&((b=8-3)>4);
System.out.println("b="+b);
Stringname = null;
//判定那么不等于空的两种方法
if(name!=null&&!name.equals(""))
System.out.println("用户名:"+name);
else
System.out.println("请输入用户名!");
//其他运算符
intnum1=3;
intnum2=3;
inta = 2+(++num1);
intb = 2+(num2++);
System.out.println(a);
System.out.println(b);
System.out.println(num1);
System.out.println(num2);
intstore = 12;
System.out.println(store<=5?"库存不足:":"库存量"+store);
}
}
2.1.3 while循环语句
while( 条件表达式 ){语句序列 }
2.1.4 do-while循环语句
do{ 语句序列 }while( 条件表达式 );
2.1.5 foreach 语句
for(元素变量 :遍历对象){循环体}
int[]array={12,42,42,22,13,58};
for (int i :array){
System.out.println(i);
}
2.1.6 跳转语句
break | 退出当前循环 |
continue | 跳出本次循环,直接进入下一次循环 |
return | 从一个方法返回,将控制交给其他语句 |
3.1 面向对象编程
3.1.1 特点
封装性:为用户提供对象的属性和行为的接口
继承性:利用特定对象之间的共有属性
父类(超类),子类
多态性:在基类中定义的属性或方法在基类及其各个子类中具有不同的语义
3.1.2 类和对象
[修饰符]class <类名> [extends 父类名][implements 接口列表]{ 定义成员变量;定义成员方法 }
修饰符 | public、abstract、final | 可选参数 |
类名 | 首字母大写 | 必选参数 |
extends父类名 | 使用extends关键字的时候为必选 |
|
implements 接口参数 |
| 可选参数 |
3.1.3 成员变量和局部变量
声明成员变量:[修饰符][static][final][transient][volatile]<变量类型><变量名>;
修饰符 | public、protected、private | 可选参数 |
static | 静态变量,如果省略该关键字,则为成员变量 | 可选参数 |
final | 用于指定该成员变量为取值不会改变的常量 | 可选参数 |
transient | 用于指定该成员变量为暂时性变量,用于对象存盘 | 可选参数 |
volatile | 用于指定该成员变量为共享变量,用于并发线程的共享 | 可选参数 |
变量类型 | 用于指定变量的数据类型 | 必选参数 |
变量名 | 用于指定成员变量的名称 | 必选参数 |
声明局部变量:[final]<变量类型><变量名>;
final | 指定fail局部变量为常量 | 可选参数 |
变量类型 | 用于指定变量的数据类型 | 必选参数 |
变量名 | 用于指定变量的名称 | 必选参数 |
构造方法:构造方法没有返回值、构造方法的名称要与本类的名称相同
普通没有返回值的构造 public void methodEx(){//..构造方法体}
语法:public book(){//...构造方法体}
public class Anything(){
public Anything(){ //定义无参数的构造方法
this("this调用有参数构造方法"); //使用this关键字调用有参构造方法
System.out.println("无参构造方法");
public Anything(){
System.out.println("有参构造方法");
}
}
3.1.4 创建对象
声明对象:对象是类的实例,要先定义该对象的类:类名对象名;
类名 | 用于指定一个已经定义的类 | 必选 |
对象名 | 用于指定对象名称 | 必选 |
为对象分配内存:实例化对象。:对象名 = new 构造方法名([ 参数列表 ]);
对象名 | 用于指定已经声明的对象名 | 必选 |
构造方法名 | 用于指定构造方法名 | 必选 |
参数列表 | 用于为指定的构造方法提供入口参数 | 可选参数 |
Fruit fruit = new Fruit();
销毁对象:自动销毁
3.2 使用包
1、将功能相近的类放在同一个包中
2、包在一定程度上避免命名冲突
3、在Java中,访问权限是以包为单位的
3.2.1 创建包:package 包名;
3.2.2 使用长名引用包中的类
com.wgh.Circcirc = new com.wgh.Circ();
使用import引用包中的类
import com.wgh.Circ;
3.3 了解Java中的继承关系
创建子类 [修饰符]class子类名 extends 父类名
修饰符 | 指定类的访问权限public、abstract、final | 可选参数 |
子类名 | 指定子类的名称,首字母大写 | 必选参数 |
extends 父类名 | 指定要定义的子类继承那个父类 | 必选参数 |
继承使用的原则:不能继承private的成员变量和成员方法
能够继承同一包中的成员变量和成员方法
子类变量中声明一个与父类变量同名的变量或者方法,则子类变量覆盖父类变量或者方法
使用this关键字:
this.成员变量名
this.成员方法名()
使用super关键字:(访问子类中被子类覆盖或隐藏的成员方法或成员变量)
调用父类的构造方法:使用super关键字:super([参数列表];
public Animal(){}
public Animal(String strSkin){skin = strskin;}
public Bird(){super("羽毛");}
操作被隐藏的成员变量和被覆盖的成员方法
super.成员变量名
super.成员方法名([列表参数])
super.skin = "羽毛";
super.move()
认识多态技术(重载Overloading)(覆盖Overriding)
重载 | 一个类中出现多个方法名相同,但参数个数和参数类型不同的方法 |
重载的方法不一定有联系,为了提高程序的可读性,一般只重载相似的方法
覆盖 | 父类和子类的关系,在子类继承父类的过程中,方法名相同,便覆盖 |
抽象类:两个特殊类抽象类和final类
抽象类 | 只做声明方法的存在而不去具体实现它的类 |
abstract class 类名{类体}
抽象类中的创建没有实际意义的必须要子类重写的方法称为抽象方法
abstract <方法返回值类型> 方法名(参数方法);
方法返回值类型 | 指定方法的返回值类型,如果没有返回值使用void | 必选参数 |
方法名 | 用于指定抽象方法的名称 | 必选参数 |
参数列表 | 方法中所需参数 | 可选参数 |
final类与final方法:不允许别人对这个类进行任何的改动
final class类名{ 类体 }
Java中的接口:一些方法特征的集合
[修饰符]interface 接口名[extends 父接口名列表]{
[public] [static][final] 常量;
[public][abstract]方法;}
修饰符 | 接口的访问权限,可选值为public | 可选参数 |
接口名 | 指定接口的名称 | 必选参数 |
extends 父接口名列表 | 指定要定义一个常量PI和两个方法 | 可选参数 |
方法 | 接口中的方法只有定义没有实现 |
|
接口默认修饰符为public,并且不允许定义private和protected
public interface Calculate{
final float PI = 3.14159f;
float getArea = (float a);
float getCircumference(float r);}
实现接口:Java不支持多继承,要实现多继承,可以通过接口实现
[修饰符] class <类名>[extends 父类名][implements 接口列表]{}
修饰符 | 用于指定类的访问权限public、abstract、final | 可选参数 |
类名 | 指定类的名称,首字母大写 | 必选参数 |
extends父类名 | 用于指定要定义的类继承哪个父类 | 可选参数 |
implements接口列表 | 用于指定该类实现的是哪些接口 | 可选参数 |
在类的继承中,只能做单重继承,而在实现接口的时候后可以一次实现多个接口,每个接口用逗号分隔,这时候可能会出现常量名或者方法名冲突的情况,用“接口名.常量”来实现,如果出现多个方法,只需实现一个方法就行
3.4 初探数组
相同类型的用一个标识符封装到一起的对象序列或基本类型数据序列