第一步:新建一个文本文档,文件名为Hellojava
第二步:修改文件后缀名为 .java数组
第三步:在Hello.java文件中,写入这样一段代码:ide
public class Hello{工具 public static void main(String args[]){网站 System.out.println("作人没有梦想,那跟咸鱼有什么分别");this }spa }指针 |
注意:代码中的中括号大括号分号等,都必须是英文字符调试
第四步:打开一个DOS窗口,使用javac命令编译java源文件对象
注意:使用javac命令的前提是要正确的配置path环境变量
第五步:确保生成Hello.class文件,使用java命令运行字节码文件
if(a[i] > a[j]) { int t = 0 ; t = a[i]; a[i] = a[j]; a[j] = t; }大括号内的语句都属于if语句块 |
几款代码编辑工具
UltraEdit、Notepad++、EditPlus
变量:intx=4;
n 局部变量:
u 定义在方法内的变量,或语句块内的变量
u 局部变量必须赋初始值,不然没法使用。
n 成员变量:
u 定义在类里面,方法的外面,属于对象,每一个对象拥有本身的成员变量,互相不冲突
u 成员变量未初始化时,系统会自动初始化,给默认值。
n 静态变量:(也叫类变量)
u 定义在类里面,方法的外面,static关键字修饰。属于类,全部对象共享一个变量
n 常量: final int y = 6;
JAVA的命名规范:
n 不可跟关键字重复
n 只能包含数字、字母、下划线、$,其中数字不能够开头
关键字:
数据类型:
n 分为两大类:基本数据类型和引用数据类型
n 引用类型的变量也叫指针,它保存了一个对象的内存地址
n Student stu = new Student();
stu 就是引用变量,把一个对象赋给stu,也就意味着stu此刻保存了对象的地址。咱们能够经过stu来调用这个对象的方法,或者访问对象的属性。 注意引用变量也是有类型区分的,stu 的类型是Student,所以有时咱们会说stu这个对象是Student类型的。 |
基本数据类
n Int 整数型 4字节
n Short 短整型 2
n Byte 字节型 1
n Long 长整型 8
n Float 单精度浮点型 4
n Double 双精度浮点型 8
n Char 字符型 2
n Boolean布尔型 1
类型转换
u char型、short型、byte型运算时,只能转换为int型
u 自动转型(类型的自动提高)的原则范围由小到大、精度由低到高
u int a =4, b=5;
u (float) (a*b) 注意在类型转换时,运算的优先级:
u 若是写成了(float)a*b,则会先把a转成float类型再与b进行计算,那跟咱们想要的结果就不同了,所以这里要特别当心。
转义字符: \反斜线加上字符
n \t \n \\ \”
运算符:
n 算术运算符
u + 、-、*、/、% 取模 求余数
n 关系运算符
u >、<、==、!=、>=、<=、
n 一元运算符
u +、-、~、!
n 赋值运算符
u =
n 逻辑运算符
u &&、|| 、!
n 递增、递减运算符
u ++、--
n 三目运算符
u (布尔表达式) ? 表达式1 : 表达式2
u 布尔表达式的值为真时,运算结果为表达式1,不然结果为表达式2
u 例1: (a == 30) ? x +=5 : x = 0;
l 若是a等于30,则执行x+=5,不然执行x=0;
u 例2:String str = (a == 30) ? “哈哈” : “呵呵” ;
l 若是a等于30,str的值是 哈哈,不然 呵呵
运算符的优先级关系
if语句的使用
n If语句接受一个逻辑表达式,判断真假
if(a>30) { System.out.println("aaaa"); } else if(a < 25){ //……… } |
switch语句
n 只能作等值的判断(==),而且只能判断int变量或能够转换成int型的变量
n 当心case穿透,记得要加break语句
n 注意理解if和switch的用法上的区别,理解它们的使用场合
char c = 'm'; switch(c) { case 'x' : { System.out.println("x"); System.out.println("x"); break; } case 'm' : System.out.println("m"); break; case 'z' : System.out.println("z"); break; default : System.out.println("默认状况"); } |
While循环
int i = 0; while(i<100/*循环条件*/) { System.out.println("循环第"+i+"次"); i++; } |
dowhile循环:第一次执行循环体,不判断条件!
For循环
n 99乘法表
u
for (int i=0; i<=10; i++){ System.out.println(i); } //打印出i的值,观察结果 |
第一步:创建一个for循环
u
u
for (int i=0; i<=10; i++){ for(int j=0; j<=10; j++){ System.out.println( i ); System.out.println( j ); } }//打印出i的值,观察结果, 打印j的值观察结果 |
第二步:创建循环嵌套
u
u
for (int i=0;i<=10;i++){ for(int j=0; j<=i; j++){ System.out.println( i ); System.out.println( j ); } }//再观察结果 //打印出i的值,观察结果 |
第三步:修改子循环的循环条件,让子循环的次数变成动态值
u
break语句和continue语句
n break: 终止当前循环体,或switch 语句块
n continue:终止本次循环,直接进入下一次循环
DEBUG跟踪调试程序
n 第一步设置断点
n 第二步以DEBUG模式来运行程序
int[] a = {23, 99, 8, 10}; int[] b = a; |
数组的内存结构
堆内存 |
0 |
1 |
2 |
3 |
23 |
99 |
8 |
10 |
栈内存 |
a #9852 |
b #9852
|
注意!数组的下标从0开始 |
数组里存放的整型数 |
数组 若干相同类型的数据的集合
n double[] arr = new double[5];
n double[]arr = {2,6,3,7,8};
n double[]arr = new double[]{2,6,3,7,8};
n arr.length得到数组的长度
n 数组的下标从0开始 因此arr[2] 表明数组的第三个元素
二维数组 一个存放数组的 一维数组
n int[][]arr = new int[5][5];
arr[0]= new int[5];[A1]
n int[][] arr2 = { {1,2,3}, {2,4,5}, {5,6,7}, {1}, {4,4,4,4}};
n arr2[0] 表明第一个子数组 也就是 {1,2,3}
n 因此要访问子数组的第三个元素,应该:arr2[0][A2] [2]
堆内存 |
0 |
1 |
2 |
3 |
栈内存 |
arr |
|
1 |
2 |
3 |
|
2 |
4 |
5 |
arr[0] |
arr[1] |
arr[2] |
arr[3] |
多维数组
n int[][][][] arr = new int[5][4][3][2];
冒泡排序、选择排序法、快速排序
n 数组元素的交换 有元素a、b、
u 首先定义一个临时的变量temp
u temp= a;
a = b;
b = temp;
加强for循环(for-each)
Product[] plist = {new Product(), new Product(), new Product()}; for( Product p : plist) { p.toString(); } //加强for循环写起来很简便,但也有缺点,因为它不像for循环有循环变量,所以咱们没法经过下标去访问数组,可是,对于上面这个加强for 循环来说,操做对象p,一样能够改变数组里面的对象的属性,这是为何呢? |
面向对象的基本思想
n 从传统的面向过程发展而来的。
n 面向过程的思惟:
u 第一步买菜,第二步洗菜,第三步切菜,第四步炒菜
n 面向对象的思惟:
u
|
第一步采购员 完成本职工做
u 第二步帮厨 完成本职工做
u 第三步案板 完成本职工做
u 第四步大厨 完成本职工做
n 把不一样的工做交给不一样的角色(对象)来处理,每一个对象负责本身的工做。这个过程当中还体现出了封装的概念!
n 类和对象
u 类就是一个模板,或者能够看作是咱们本身定义的数据类型
u 对象就是利用模板建立的一个具体事物,或者能够看作是使用自定义数据类型声明出来的变量,在JAVA中咱们把对象叫作一个类的实例
n 如何定义一个类?
public class Product { public static int num = 10; } |
l 成员变量: 普通的成员变量和静态成员变量(类变量)
n 类变量是全部对象共享的,能够经过类名直接访问:
n Product.num 而不须要构造对象
l 如何建立一个对象
n 类名 对象名 = new 类名();
n Product p1 = new Product();
l Product()被称之为构造方法,它是一个很特殊的方法:
n 构造方法名必须和类名相同
n 构造方法不能够写返回值类型
n 构造方法默认状况下不须要显示的去声明,系统帮咱们默认建立
n 调用构造方法必需要跟new关键字配合
n 系统默认建立的构造方法是无参的
n 一旦咱们定义了任何一个构造方法,系统默认的会自动失效
n 构造方法能够同时定义多个:在JAVA中,同一个类里,多个方法名称相同,为了区别,要求参数不能同样,这种形式叫作方法重载
l 类的继承
public class Product extends Object{ public static int num = 10; } |
n 继承的最大做用是可以让子类拥有父类的方法和属性,全部子类都遵循父类的特性,而且在父类的方法不能知足需求的时候,咱们能够经过重写覆盖父类的属性和方法。
n 同时,继承在某种程度上说,也是一种分类的方式,咱们说类是一种模板,经过类来构造对象。那么模板也是有分类的。
n 例如:动物类能够分为:无脊椎动物和脊椎动物
其中脊椎动物又分为鱼类、两栖类、爬行类、鸟类、哺乳类等。
有了继承,分类能够更加明细,更加清晰
n [A3] 子类继承父类的属性和方法
u 静态属性是不继承的
u 私有属性子类不可以直接访问
u JAVA当中只有单继承
u 建立子类对象的时候,在调用子类构造方法的时候,会先调用父类的构造方法
u 若是父类还有父类,会从最顶层的父类构造方法开始调用,一直到子类的构造方法
n 子类继承父类的属性和方法,均可以本身重写,重写以后,覆盖父类的方法,这个叫作方法的重写
n 权限修饰符:private public protected 默认(什么都不写)
修饰符 |
同一个类 |
同一个包 |
子类 |
不一样包 |
Public |
√ |
√ |
√ |
√ |
Protected |
√ |
√ |
√ |
|
默认 |
√ |
√ |
|
|
Private |
√ |
|
|
|
n 类的封装
u 将某些属性或方法设为私有的,防止外界直接访问
提供一个公有的方法,让外界经过公有方法间接访问
u 封装的主要目的其实在于隐藏,隐藏没必要要的细节过程。例如一台电脑,内部结构异常的复杂,生产厂商将内部的细节封装起来,咱们只能经过鼠标和键盘来操做电脑,这样的好处在于,咱们没必要了解其内部的复杂构造,而只须要键盘简单的操做就可使用电脑。
u 再好比一台汽车,咱们操做一台车只能经过油门、刹车、方向盘。其余的细节内容都被封装了起来,发动机内部到底作了什么事情,咱们没法得知,固然咱们也不肯意去关心那些细节问题,咱们只须要会使用油门和方向盘就足够了,这不正是封装带来的好处么?
n [A4] super、this分别表明:
u super表明了父类对象的引用
u this表明了当前对象的引用
n static关键字
u 用static修饰的变量和方法,叫作静态变量或静态方法,从属于类,能够经过类名直接调用。
n package关键字
n import关键字
n final关键字
u 修饰变量:变量的值不能够改变!而且必须在定义的时候赋初值
u 修饰方法:这个方法将不可以被子类重写
u 修饰类:该类将不可以被继承
l 类的多态:能够理解为多样性,或多种表现状态
n 方法的重载也算是多态的一种表现形式
n 方法的重写一样能够表现出多态的特性
n 举例:
父类 ss = new 子类();
子类被转型成父类,因为父类的层次比子类高,所以这里能够进行自动转型。无需手动干预。
转型以后,ss为父类的引用,此时ss只能调用父类的方法,子类特有的方法,ss无权调用。
只有一种特殊状况可使用子类的方法,就是父类中的方法被子类重写,此时父类方法被覆盖,就能够调用子类方法。
举例:
public class Animal { public int attack = 100;//攻击力
public void sound() {//声音 System.out.println("Animal sound"); } } |
有父类Animal,包含一个方法名称为sound
子类重写父类的sound方法
public class Cat extends Animal { @Override public void sound() { System.out.println("喵喵"); } public void catchMouse() { System.out.println("抓老鼠"); } } |
此时如有父类引用指向了一个子类对象cat
Animal animal = new Cat();
父类引用调用sound方法,执行的仍然是子类对象的sound方法
这时,sound方法所表现出来的结果,是多种多样的,根据子类的不一样,获得的结果也不一样。一样都是sound 方法,却有多种结果能够出现。咱们将这种情形称之为多态。
因此说重载、重写都是多态的表现,也就是说方法名称相同,但具体操做不一样。好比咱们说“吃”这个字,在不一样的状况下咱们能够有多种含义,例如:吃饭、吃钉子、吃官司等,具备相同的名称,但具体的操做却不同。再好比“开”这个字,开车、开窗、开饭、开局等等。
了解更多详情请登陆超人学院网站http://www.crxy.cn或者每周日晚八点半相约免费公开课 https://ke.qq.com/course/53102#term_id=100145289 具体详情请联系QQ2435014406