一.基本数据类型
整数型 byte 1个字节 short 2个字节 int 4个字节(默认的) long 8个字节
文本型 char 2个字节 (声明变量时要加上单引号)
布尔型 Boolean 其值只有2个,true fase 默认初始值是fase
浮点数类型 float double float声明时 后面要加l 默认是doublefloat占4个字符 double占8个字符。
二.数组:
概念:数组就是一组有顺序,具有相同数据类型的数据集合,也可以说是,用来存储一组相同数据类型的数据结构。(引用类型)
就是一个小整体,在整个程序中被看作是一个对象,而数组中每一个元素都可以看作是数组的成员变量。(自己理解的)
1.声明数组
1.数组元素名 数组名 [];2.数组元素名 []数组名;
创建数组:
1.利用 new关键字创建。格式:数组名=new数组元素的数据类型[整数元素个数]
2.声明数组和创建数组同时完成。格式:int [] x = new int [100].
2.数组的初始化
1. 先定义在初始化(动态初始化):int [] ia = new int[4]; ia[0]=1; ia[1]=2;ia[a]=3
2.定义数组同时为数组元素分配空间并赋值(静态初始化):int [] ia = {1,2,3};
或int [] ia = new int[]{1,2,3};
3.数组的引用
引用方式:arrayName[index]。Index是数组的下标,描述了元素从数组中相对位置,(元素下标从0开始)
4.一维数组
选择排序:获取当前没有排好序中的最大元素和数组最右端的元素交换,循环这个过程即可实现对整个数组排序。
冒泡排序:依次两两比较排序元素,将带排序元素从左至右比较一遍称为一趟“冒泡”。
每趟冒泡都将带排序列中的最大关键字交换到最后位置。
5.栈内存与堆内存的关系
数组的引用保存在占内存中,在堆内存中开辟一片空间(连续的),然后栈内存上的引用指向这片空间的首地址。
三.基本语法
标识符:可以自己起名字的都叫标识符,都遵循标识符的命名规则。
标识符命名规则:
标识符由字母、数字、下划线“_”和美元符“$”开头。
标识符对大小写敏感,长度无限制。
取名应见名知意,且不能与关键字重名。
Java约定:
类名的首字母要大写。
变量名和方法名的首字母要小写,关键字要小写。
常量名全部字母大写。
运用驼峰标志。
字符变量:
‘\n‘是换行符;
‘\t‘是制表符,相当于table键;
‘\b‘是退格键,相当于BackSpace;
‘\‘‘是单引号,而‘\“‘是双引号;
‘\\‘是一个斜杠“\”。
四.控制结构
If:if··else 只有一句需要执行的语句时可以省略{} 等号两边不用空格
For:形式:for(表达式1;表达式2;表达式3;){语句;}执行时判断是否结束的是表达式2,如果表达式2是false输出结果。
While/do··while:while:先判断在执行,do···while:先执行在判断。(无论是否满足表达式,都先执行一遍)
Switch:条件补充语句:格式casexx; case xx; default ;在需要输出case值时用break语句,多个case可以合并到一起。
Break/continue:break语句终止某个语句块的执行,在循环语句中可以强行退出循环 continue 终止某一次循环,跳过这次循环,开始下一次循环过程。
If 语句:
public class test {
public static void main(String[] args) {
int i = 50;
if ( i < 20 ) {
System.out.print("i< 20" );
}
else if ( i < 40 ){
System.out.print("i< 40 ");
}
else if ( i < 60 ){
System.out.print("i< 60 ");
}
else if ( i >60 ){
System.out.print("i>=60 ");
}
}
}//最终输出i<60
For语句
public class adf {
public sta ic voidmain(String[] args) {
longresult = 0;
long f = 1 ;
for (int i = 1; i<= 10; i++) {
f = f * i;
result+=f;
}
System.out.print("result=" +result );
}
}//最终输出result= 4037913
Switch和break
public class testswitch {
public static void main(String[] args) {
int i = 5;
switch (i){
case 5 :
System.out.print("e");
break;
case 1 :
case 4 :
System.out.print(14);
default :
System.out.print("wang");
}
}
}//最终输出e
五.Java虚拟机的概念,JDK的概念
1.Java虚拟机
Java虚拟机是抽象的计算机,是java语言的运行环境。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域、还有相应的指令系统。
特点:
Java虚拟机是实现java跨平台的关键。
JDK概念:java开发工具。
JDK包含的基本组件:
javac – 编译器,将源程序转成字节码
jar –打包工具,将相关的类文件打包成一个文件
javadoc – 文档生成器,从源码注释中提取文档
jdb – debugger,查错工具
java – 运行编译后的java程序(.class后缀的)
appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
Jconsole: Java进行系统调试和监控的工具
Java程序的命令行编译、运行
六.类的封装性
通常将类声明为private(私有类)然后在用public(公共方法) 对这个变量进行访问。
对一个变量的操作通常是赋值(setXX)和读取(getXXX)
类的封装有2层意思:
将数据和对数据的操作组合起来构成类,类是一个不可分割的独立单位。
类中既要有与外部联系的方法,同时也要尽可能的隐藏类的实现细节。
七.方法的调用,静态方法和实例方法
1.方法的调用
方法与方法重载
形式参数:在方法被调用的时候用于接受外部传入的数据的变量。
实际参数:在方法被调用的时候实际传给XX的值
参数类型:形式参数的数据类型。
返回值:方法在执行完毕之后还调用它的程序的数据,如没有必须给出返回值类型void。
返回值类型:函数要返回的结果的数据类型。
Java语言中使用下属形式调用调用方法:对象名,方法名,(实参列表)
实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配
Return语句终止方法的运行并指出要返回的数据。
只有涉及到方法的时候才用到形参和实参,
调用方式:
1.如果方法没有返回值或调用方法不关心方法的返回值,可以下面的格式调用定义的函数;
方法名(实参1,实参2,·····)
2.如果调用程序需要返回结果,可以下面的格式调用定义的函数;
变量=方法名(实参1,实参2,·····)
3.对于有返回值的方法调用,也可以在程序中直接使用返回的结果。
4.实参的数目、数据类型和次序必须与所调用方法声明的形参列表匹配。
方法的重载:
Return语句:终止方法的运行并指定要返回的值,然后把控制权交给调用它的语句。
格式:return【返回值】; retrun;
一个类中可以同时存在名字相同,参数不同(个数或类型)不同的多个方法。
调用时,编译器会根据不同的参数列表选择对应的方法。
为了程序的可读性,最好重载相同含义的方法、
不能以不同的返回值来区别重载的方法。
2.1.静态方法和实例方法
静态方法是使用公共内存空间的,所有对象都可以直接引用,不需要创建对在使用JAVA中使用静态方法
编程时我们心里一定要清楚静态方法和类的非静态方法方法的区别:
最根本区别从编译角度来说吧:
1) 静态(static)方法是编译时直接加载加载到内存中(离cpu最近的一块内存区域也称为堆栈),比如程序的public staticmain(args []){}方法。静态方法不能被实例化,也不允许被实例化!
因此你可以通过“类名”+“.”+“静态方法的名()”来调用
2)非静态方法(类的非静态方法)通过关键字 “new” 字来实例化一个对象(object),这个对象放在内存的另一块区域堆(heap)中。
也就是说编译时,非静态方法必须先实例化类的一个对象,通过“对象名”+“非静态方法名()”来调用,
或者是“对象引用(句柄)”+“.”+“静态方法的名()”;
静态变量:
1.类的静态变量可以
直接引用,类的静态变量相当于某些程序语言的全局变量。
2.静态方法只能使用静态变量,不能使用实例变量。
3.类的静态变量只有一个版本,所有实例对象引用的都是同一个版本。
2.2实例方法
实例方法也叫做对象方法。(非静态方法)
类方法是属于整个类的,而实例方法是属于类的某个对象的。
由于类方法是属于整个类的,并不属于类的哪个对象,所以类方法的方法体中不能有与类的对象有关的内容。即类方法体有如下限制:
(1) 类方法中不能引用对象变量;
(2) 类方法中不能调用类的对象方法;
(3) 在类方法中不能使用super、this关键字。
(4)类方法不能被覆盖。
如果违反这些限制,就会导致程序编译错误。
与类方法相比,对象方法几乎没有什么限制:
(1) 对象方法中可以引用对象变量,也可以引用类变量;
(2) 对象方法中可以调用类方法;
(3) 对象方法中可以使用super、this关键字。
在程序设计中,一些通用的、公用型的方法与类的对象无关,因此常常被作为类方法实现。如Java类库中Math类,其中多数的数学运算操作都被定义成静态方法。因此,可以使用类方法把一些通用的、公用型的方法放在合适的类中,从而很好地将它们组织起来。应用程序中的主方法main就是类方法。
八.面对对象编程的三个表现
1.子类继承父类
Java继承特点:只能单继承不支持多继承,具有层次结构,子类继承了父类的方法和属性。
构造方法:
子类继承父类所有的成员方法,但不继承父类的构造方法。子类可在自己的构造方法中调用父类的的构造方法。 Super()或 super(参数列表)
2.方法的重写:
在子类中可以根据需要对从基类继承来的方法进行重写。
重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。
重写方法不能使用比被重写方法更严格的访问权限。
如:父类中的方法是public的,那么子类中的方法就不能是private的。
子类和父类的方法具有相同的名称和类型,用子类调用子类中的重写方法,super.成员用于调用父类中的成员。
Final 声明的方法,属性,类不能被子类引用————最终方法,属性,类。
标记的常量只能赋一次值,不能被改变。
用public static final 共同标记常量时,这个常量就成了全局常量,只能在定义时赋值。
Public static final pe = 3.1415;
Object类:类中的最高层,是所有类的父类。
2.1Object 中的toString方法
定义形式:public String toString()
在进行String与其它类型数据的连接操作时(如:System.out.println(“info ” +obj)),将自动调用该对象类的toString()方法。
通常情况下,重写toString()方法,返回对象的有用信息。
2.2Object的equals方法
定义形式:public boolean equals()
此方法提供了比较对象是否相等的逻辑
Object的equals方法定义为:x.equals(y)当x和y是同一个对象的引用时返回true,否则返回false。
通常情况下,想要比较对象内容是否相等,需要重写equals方法。
对象的类型转换: 一个基类的引用类型变量可以“指向”其子类的对象。
一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)。
可以使用引用变量 instanceof 类名 来判断该引用类型变量所“指向”的对象是否属于该类或该类的子类。
子类的对象可以当作基类的对象来使用称作向上转型(自动转换),反之称为向下转型(强制转换)。
3.多态
多态性:一种方法,可以多种实现版本,即一种定义,多种实现。类的多态性提供方法设计的灵活性和执行的多样性。
存在的三个条件:有继承,有方法重写,父类引用指向子类对象