001-007:Java知识点小结
一、
1.先从计算机基础常识开始,介绍了软件分为系统软件和应用软件。并掌握了几种常用的DOS命令:
1) dir : 列出当前目录下的文件以及文件夹
2) md : 创建目录(mkdir)
3) rd : 删除目录
4) cd : 进入指定目录
5) cd.. : 退回到上一级目录
6) cd\: 退回到根目录
7) del : 删除文件
8) exit : 退出 dos 命令行
9) D: 直接进入d盘;
10) cls 清屏
11) echo 111 > 1.txt 一个箭头是覆盖
12) Echo 1115 >> 1.txt 两个箭头是追加
2. java软件下载,安装等;并学习了环境搭建,配置环境变量:
1)我的电脑--右击----高级系统变量----环境变量
2)创建
3)JAVA_HOME
4)C:\Program Files\Java\jdk1.8.0_74
5)path
6)%JAVA_HOME%\bin;(英文状态下
3. 创建java文件、编译、运行等
二、
1.标识符:凡是自己可以取名字的地方都叫标识符;
定义合法标识符规则:
(1)由26个英文字母大小写,0-9,_或$组成
(2)数字不可以开头。
(3)不可以使用关键字和保留字,但能包含关键字和保留字
(4)Java中严格区分大小写,长度无限制
(5)标识符不能包含空格
注意:在起名字时,为了提高阅读性,要尽量有意义,“见名知意
Java中的名称命名规范
(1)包名:多单词组成时所有字母都小写:xxxyyyzzz
// 包名是一个应用的唯一身份标示(例如:安装包,工程包)
(2)类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
(3)变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
(4)常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
2. 数据类型,
byte、short、int、long、float、double、char、boolean八个基本类型;
类、数组、字符串等三个引用类型。
对于变量的赋值格式为:数据类型变量名 =赋予值;
变量要遵循“先定义后使用”的原则。
3. 计算机的存储方式为补码形式;
正数的原码、反码、补码是一样的;
负数的存储,
1)将其正数转成二进制原码,
2)在符号位添加1表示负数,
3)符号位不变,其他位取反,变成反码,
4)反码+1,就是其补码形式。
4.基本数据类型转换:
容量小的数据类型运算时自动转换为容量大的数据类型;
byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。
强制类型转换:
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符(()),但可能造成精度降低或溢出,格外要注意。
5. 运算符:
算术运算符、
赋值运算符、
比较运算符(关系运算符)、
逻辑运算符、
位运算符、
三元运算符 boolean a = (b > c) ? ture : false;
今天的重点在进制转换,尤其是二进制转换为八进制和十六进制的方法,在以后的十进制转十六进制算法中以此思路借助位运算来实现。
三、
1.掌握几种运算符,重点区分
short s = 3;
s=s+2; ①
s+=2; ②
①和②有什么区别?
①因为short在运算时要转成int型,所以(s+2为int型,再将其赋值给short型的s,就会产生精度丢失;而 ②采用+=运算符,运算时左边类型不变,所以最后是short型。
2. 区分&和&&:
特点:只要一个为false,全为false
不同点:& 无论左边是否为false,右边都参与运算
&& 左边为false右边不参与运算
区分|和||
特点:只要一个为true,全部为true
不同点:| 左边为true时候,右边正常参与运算
|| 左边我true,右边不参与运算
3. 三元运算符 : 类型 变量 =条件语句 ?表达1:表达2;
如果条件成立值为表达1;
如果条件不成立值为表达2;
表达1和表达2值类型一致。
4.程序流程控制:
if(条件语句){
语句;
}
if(条件语句){
语句;
}else{
语句;
}
if(条件语句1){
语句1;
}else if(条件语句2){
语句2;
}else if(条件语句3){
语句3;
}else......
switch
switch(变量){
case 常量1:
语句;
break;
case 常量2:
语句;
break;//中断操作
default:
语句3;
1)根据变量的值,选择相应的case去判断,一旦满足case条件,就执行case的相应语句。如果没有break或者已经到结尾的话,会继续执行其下的case语句。
2)default:是可选的,而且位置是灵活的。
3)变量可以是哪些类型?char byte short int枚举String(jdk1.7)
4)case 条件:其中条件只能是值,不能是取值范围!
四、
1.循环:for语句、while语句和do while语句;循环可以嵌套。
1)无限循环:
for(;;){}
while(true){
break;
}
2.break的用法:终止某个语句块的操作,即终止本层操作;
continue语句的用法:跳过某个循环语句的一次执行,即跳过本次操作。
今天在练习打印各种排列形状的“*”时,学到了换行和在同一行打印的命令:
System.out.print();可以在同一行打印
System.out.println();则为换行打印。
同时今天练习打印菱形是重点内容,尤其要弄清这个算法的编写思路。
五、
1.学习方法;
修饰符(public static)void(int) aa(数据类型 变量名1,数据类型 变量名2){
语句;
return 值;
}
2.方式注意点:
------------------
1)方法不调用不执行
2)方法与方法是平级关系,不能嵌套定义
3)方法定义的时候参数之间用逗号隔开
4)方法调用的时候不用在传递数据类型
5)如果方法有明确的返回值,一定要有return带回一个值
3.没有明确返回值的函数调用:其实就是void类型方法的调用,只能单独调用
void类型返回值的方法调用:
单独调用
输出调用(错误)
赋值调用(错误)
4.方法重载
方法名一致,参数数据类型或参数个数不一致
5.打印九九乘法表。
6.数组概念:数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
数组既可以存储基本数据类型,也可以存储引用数据类型。
数组的定义格式
格式1:数据类型[]数组名; A:int[] a;定义一个int类型的数组a变量
格式2:数据类型 数组名[];B:int a[];定义一个int类型的a数组变量
7. 动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
格式:数据类型[] 数组名 = new 数据类型[数组长度];
数组长度其实就是数组中元素的个数。
举例:int[] arr = new int[3];
静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
举例: int[] arr = new int[]{1,2,3};
8. 理解java的内存分配,
栈 (存储局部变量 )、
堆(存储new出来的东西)、
方法区、
本地方法区 (和系统相关)、
寄存器 (给CPU使用)
9. 数组操作的两个常见小问题:
ArrayIndexOutOfBoundsException:数组索引越界异常
原因:你访问了不存在的索引。
NullPointerException:空指针异常
原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。
今天在练习数组的遍历打印时又用到了一个length属性,专门用于获取数组的长度,格式为:数组名.length返回数组的长度。重点练习形如[1,2,3,4,5]数组的遍历打印、数组的逆序打印、求最大最小元素、给出指定数值获取数组相关元素以及给出指定元素获取其在数组中的索引位置等代码编写。
六、
1、二维数组
格式1
数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组
n表示每一个一维数组的元素个数
格式2
数据类型[][] 变量名 = new 数据类型[m][];
m表示这个二维数组有多少个一维数组
这一次没有直接给出一维数组的元素个数,可以动态的给出。
举例:
int[][] arr = new int[3][];
arr[0] = new int[2];
arr[1] = new int[3]
arr[2] = new int[1];
格式3
数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
简化版格式:
数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
举例:
int[][] arr = {{1,2,3},{4,6},{6}};
2.二维数组遍历。
外循环控制的是二维数组的长度,其实就是一维数组的个数。
内循环控制的是一维数组的长度。
3.重点练习打印杨辉三角形。
4.面向对象思想面向对象是基于面向过程的编程思想。
面向过程:强调的是每一个功能的步骤
面向对象:强调的是对象,然后由对象去调用功能
万事万物皆对象。
5.面向对象特征
封装(encapsulation)
继承(inheritance)
多态(polymorphism)
6.类与对象
我们学习编程语言,是为了模拟现实世界的事物的。
而我们学习的编程语言Java中最基本的单位是:类。
由此,我们就得到了现实世界事物和类的对应关系:
事物: 类:
属性 成员变量
行为 成员方法
类:是一组相关的属性和行为的集合。是一个抽象的概念。
对象:是该类事物的具体表现形式。具体存在的个体。
7.重点理解对象的内存图
一个对象的基本初始化过程
两个对象的内存图
方法的共用
七 、
1.成员变量和局部变量的区别
1)在类中的位置不同
成员变量 类中方法外
局部变量 方法内或者方法声明上
2)在内存中的位置不同
成员变量 堆内存
局部变量 栈内
3)生命周期不同
成员变量 随着对象的存在而存在,随着对象的消失而消失
局部变量 随着方法的调用而存在,随着方法的调用完毕而消失
4)初始化值不同
成员变量 有默认的初始化值
局部变量 没有默认的初始化值,必须先定义,赋值,才能使用。
2.形式参数的问题:
基本类型:形式参数的改变不影响实际参数
引用类型:形式参数的改变直接影响实际参数
3.匿名对象:就是没有名字的对象。是对象的一种简化表示形式。
匿名对象的两种使用情况:
对象调用方法仅仅一次的时候
作为实际参数传递
4.封装概述:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:
隐藏实现细节,提供公共的访问方式
提高了代码的复用性
提高安全性。
封装原则:
将不需要对外提供的内容都隐藏起来。
把属性隐藏,提供公共方法对其访问。
5.private关键字:
是一个权限修饰符。
可以修饰成员(成员变量和成员方法)
被private修饰的成员只在本类中才能访问。
private最常见的应用:
把成员变量用private修饰
提供对应的getXxx()/setXxx()方法
6.this:代表所在类的对象引用
记住:
方法被哪个对象调用,this就代表那个对象
什么时候使用this呢?
局部变量隐藏成员变量
7.构造方法作用:给对象的数据进行初始化
构造方法格式
方法名与类名相同
没有返回值类型,连void都没有
没有具体的返回值
构造方法注意事项
如果你不提供构造方法,系统会给出默认构造方法
如果你提供了构造方法,系统将不再提供
构造方法也是可以重载的
今天重点练习一个基本类的标准写法:
一个基本类的标准代码写法
类
成员变量
构造方法
无参构造方法
带参构造方法
成员方法
getXxx()
setXxx()
show()
给成员变量赋值的方式
无参构造方法+setXxx()
带参构造方法