Java4Android 课程笔记
第一集 1、名词介绍: 4:代表for;
2、java考古学: 主要介绍java发展史; 讨论java的未来发展; 问题: 学习一样东西,不去了解发明他的人,可行吗?
第二集 1、什么是编程 一种和计算机沟通的语言; 一种创造性的工作; 让上帝与你同在;
2、JDK的安装和配置 JDK就是java开发工具的集合; windows需要设置PATH和CLASSPATH环境变量; PATH:C:\Program Files\Java\jdk1.7.0_40\bin; CLASSPATH:.;
3、创世纪(Hello World) 代码: public class HelloWorld{ public static void main(String[] argv){ System.out.println("Hello World!"); } } 编译并运行: javac HelloWorld.java java HelloWorld
第三集 1、什么是环境变量 指定操作系统运行时参数; 通常是键值对(一个名字等于一个值); PATH环境变量作用: 提供命令的搜索路径。 CLASSPATH环境变量的作用: 提供要运行的类文件的搜索路径。
2、JDK里面有什么 开发工具、例子、头文件、jre、包文件、帮助文档、一部分java的源文件;
3、什么是JRE java运行时环境; 含java虚拟机、java平台核心类文件、其他支持文件;
4、什么是JVM java虚拟机的缩写; 软件虚拟出来的计算机; java程序运行在JVM上; 只要系统安装了jvm,就可以运行java程序,而不用对java程序进行任何修改; 这也是java的跨平台实现方式;
第四集 重点:java的语法; 1、什么是变量
2、变量的声明 类型 变量;
3、变量分为哪些类型 基本数据类型(原始数据类型): 数值型 整数类型(byte,short,int,long) 浮点类型(float,double) 字符型(char) 布尔型(boolean) 引用数据类型: 类(class) 接口(interface) 数组
4、变量的命名规范 语法规范: 以字母、下划线或者美元符开头; 后面跟字母、下划线、美元符或者是数字; java变量名没有长度限制; java变量名对大小写敏感; 驼峰命名: 变量名应该使用有意义的英文单词; 如果变量名只有一个单词,则所有的字母小写; 变量名如果由多个英文单词组成,则从第二个单词开始首字母大写; 如: public class Test { public static void main(String args[]) { int age = 20; int myAge = 20; int $age = 20; int _age = 20; int Age = 20; // 不符合驼峰命名法 int 1age = 20; // 变量名错误 } }
第五集 1、java数据类型分类 第四集 3
2、boolean类型变量的特征 使用逻辑运算,一般用于程序流程控制; 只有两种值: true和false; 且不能用0和非0,或者空和非空来表示;
3、char类型变量的特征 Unicode字符集 为每种语言的每个字符设定了统一并且唯一的二进制码; 最多允许1114112个字符;
乱码 字符存入时使用A字符集,读取时使用其他字符集就会出现乱码;
由于java使用的Unicode字符集,所以一个char类型变量可以存一个汉字; 如: char c = '中'; // 写代码时必须以ANSI格式编码;这点与视频讲述的不同;
补充:如果代码保存时采用的utf-8字符集,在win命令行下编译时需指定字符集,因为命令行默认字符集是ANCI:
javac -encoding utf-8 xxx.java
即可将字符变量打印出来;
如果在win下默认保存的是ANCI字符集,则在命令行下直接编译即可正常打印出字符类型的汉字;
char c = 'u'; char zh = '呵'; System.out.println(zh + "" + c); //正常打印 //System.out.println(zh + c); //本行打印出来将会一串数字
4、数值型变量的特征 整型常量的三种表示方式: 十进制:如12,-33,0等; 八进制:以0开头,如012等; 十六进制:以0x或0X开头,如0X12,0x12等;
整型常量默认为int型,如 int i = 3; 声明long型常量可以后后加'l'或者'L',如 long l = 3L;
第六集 练习 基本数据类型的赋值与运算 1、打印布尔类型值
2、打印char型变量
3、创建各种类型的变量,然后做运算; 字面量: float类型赋值: float f = 0.1f; // 若写0.1会出错,提示损失精度; 小数默认为double型,使用float则需加f或F; 如: float a = 0.5 * 10; 编译出错;赋值号右边默认是double型; 正确的是: float a = 0.5f * 10; int b1 = 0; long b2 = 0; b1 = b2; // 编译出错,可能损失精度; 范围大的类型变量不能赋值给范围小的变量; 可以通过强制转换通过编译,但是可能会引起溢出导致结果不正确; byte和short例外,可以用整型直接赋值,但是编译器会对具体值进行判断; byte < short < int < long < float < double
第七集 1、运算符的分类 算术运算符:+,-,*,/,%,++,--; 关系运算符:>,<,>=,<=,==,!=; 布尔逻辑运算符:!,&,|,&&,||; 位运算符:&,|,^,~,>>,<<,>>>; 赋值运算符:= 扩展赋值运算符:+=,-=,*=,/=; 字符串连接运算符:+
2、各种运算符的使用方法 07Test
& 逻辑与:int i = 5; boolean j = i > 6 & i++ > 7; 判断 i > 6 为false,i++ > 7 为flase,i值加1; && 短路与:int i = 5; boolean j = i > 6 && i++ > 7; 判断 i > 6 为false,i++ > 7 就不再判断,i值还为5; 08Test
| 逻辑或: || 短路或:
3、什么是表达式
第八集 …… 第十六集
第十七集 1、静态成员变量的语法特点 可以直接使用类名调用; 所有对象使用的静态变量是同一份;
2、静态成员函数的语法特点 可以直接使用类名调用; 不能直接使用非静态成员变量; 因为静态成员函数可以直接由类名调用,这种情况下是没有对象的; 所以无法调用对象的成员变量,此时就只能调用静态成员变量; 静态成员函数中不能使用this;
3、静态代码块的语法特点 static{……} 没有名字,在装载类时自动执行; 主要作用就是为静态成员变量赋初始值;
第十八集 继承 1、什么是继承 java只支持单继承,不允许多继承; 关键字:extends 子类继承父类的成员变量和成员函数;
2、为什么要使用继承 方便性,共同代码需要修改时只需对父类的成员进行修改,所有子类的成员也随之被修改; 即: 减少重复代码;
3、继承的基本语法特点 clsaa 子类名 extends 父类名 { }
第十九集 子类的实例化过程 1、生成子类的过程 先调用父类的构造函数,再调用子类的构造函数;
2、使用super调用父类的构造函数方法; 在子类的构造函数中,一定会调用父类的构造函数; 开发人员不调用的话,编译器会自动在子类的构造函数中的第一行加一句: super(); 来调用父类的构造函数; 编译器自动加的该语句只是调用父类的无参构造函数; 这个语句必须是子类构造函数的第一个语句; 子类调用父类的构造函数,根据参数的个数,类型来决定调用父类的哪个构造函数;
第二十集 函数的复写 1、函数的复写 子类的函数与父类的函数无论函数名、返回值类型、参数列表等信息都一致的话,就是子类对父类函数的复写;
2、使用super调用父类的成员函数; 使用super.xxx();调用父类的成员函数; 复写过程中子类中复写的函数调用super.xxx();就是不覆盖父类的函数,而是在父类的方法基础上加语句; 复写过程中不调用super.xxx();则是覆盖父类的函数; 复写过程中子类的对象调用的是子类的函数; 父类的对象调用的是父类的成员函数; 在子类中复写父类的成员函数;
第二十一集 对象的转型 对多态的体现 1、对象的向上转型 将子类的对象赋值给父类的引用; 如: 子类:Student;父类:Person; Student s = new Student(); Person p = s; 一个引用能够调用哪些成员变量,取决于这个引用的类型; 子类中新定义的成员变量,父类的引用是无法使用的; 引用调用的是哪一个方法,取决于引用指向的对象; 指向的对象若对父类该方法进行了复写,则调用子类中复写过的方法;若没有复写,则调用父类中的方法; 引用不能调用子类中的非复写方法;
2、对象的向下转型 子类:Student;父类:Person; Student s1 = new Student(); Person p = s1; Student s2 = (Studnt)p; 向下转型的过程是先向上转型,再向下转型; 直接生成一个父类对象,无法直接转成子类对象,编译不会出错,但是运行会出现类型转换的异常;
第二十二集 面向对象应用(一) 1、如何使用面向对象的特征,满足客户提出的需求变化; 面对重复代码使用继承来解决,方法差异使用复写解决;
第二十三集 抽象类和抽象函数 1、抽象函数的语法特征 只有函数的定义,而没有函数体的函数称为抽象函数; abstract void fun(); // 只有定义(C语言的声明),没有函数体(C语言的定义); 类中若有抽象函数,则该类必须设置为抽象类; 类中没有抽象函数,也可以被声明为抽象类; 非抽象的子类不能使用抽象类生成对象,不可以调用抽象类的任何成员; 抽象类的子类可以调用父类的静态成员; 可以设置一个类为无抽象函数抽象类的子类,其他类利用该类间接调用抽象类的所有成员; 抽象类不能生成对象,因为抽象类的抽象函数没有函数体; 所以抽象类天生是当爹的,只能被继承; 继承抽象类的类也必须被声明为抽象类,或者复写父类(抽象类)的抽象函数; 抽象类可以拥有构造函数,不过是为子类提供的; 不可以直接通过 new 抽象类 来调用抽象类的构造函数,但是可以通过子类构造函数的super()来调用; 如Person是一个抽象类,Chinese是Person的子类,创建对象时这样调用:Person p = new Chinese(); 在创建Chinese类的对象时就可以间接的调用Person类的构造函数和复写Person类的抽象函数;
2、抽象类的语法特征
3、抽象类的作用