第一章将java文件编译成class文件: 在记事本中编辑java代码-----修改文件名为.java文件----打开cmd---进入文件所在文件路径如f:----在命令窗口执行javac 文件名.java--执行命令:java 文件名 包名小写,类名首字母大写,类名可 ...
第一章
将java文件编译成class文件:
在记事本中编辑java代码-----修改文件名为.java文件----打开cmd---进入文件所在文件路径如f:----在命令窗口执行
javac 文件名.java--执行命令:java 文件名
包名小写,类名首字母大写,类名可.java文件名要完全一致,是\n注意不是/
用javac 文件.java命令编译,后用java 类名 执行形成的Class文件
第二章
标识符的命名规则:(驼峰命名法)变量名,方法名第一个单词小写后面每一个单词首字母大写
三种注释:单行,多行《按住Shift鼠标点击开始结束部分,Ctrl+Shift+/》,文本注释
扫描类库:Scnner input=new Scanner(system.in);
取得输入的内容: answer= input.next();
Boolean flag= Input.hasNextInt();判断输入的值是不是整数,是就返回true,否则false
知道8种基本数据类型(byte,short,int ,long,float,double,char(a=97,A=65),boolean)存在栈中
引用数据类型:数组,类,接口(存在堆中)
Byteàshortàintàlong àfloatàdouble
char
Char可以自动转换为int类型 存储位数越多,类型的级别就越高
/*int age1=19;
char sex='女';
int result=age1+sex; //注意int和char类型相加自动转为高级的int类型,结果为int类型
System.out.println(result);*/
关系运算符的关系表达式结果为 布尔值
逻辑运算符与&,|,!
优先级:! > & > ^ > | > && >||(短路&&如果前面一个不成立后面的不参加运算)
Null值不能用equals方法判断等值;
三元表达式: 条件?表达式1 :表达式2(条件为真执行表达式1,条件为假执行表达2)
Short s=1 ,s2=4; short s5=s+s2;两个short类型变量可以相加)(s=s+8;这时候报错)
String .equals比较的是值(不能为null),==比较字符串的地址
第三章
1.Switch:(转换)
Switch(int mingci){ //快捷键 Alt+/+回车
Case 1 :System.out.print(“参加麻省理工一个月的夏令营”) break;
Case 2 :system.out.print(“送笔记本”) break; //跳出所在的循环
Continue //继续下一次循环
Default : 只有所有的case没有匹配上才执行default内容
}
Switch中的判断,jdk1.7一下不能为字符串,可以是int,enum,char(可自动转换为int)
While(条件){循环体} 当条件成立时执行,直道条件为false
注意:do...while(); 结束后面有分号
For(int i=0;i<10;i++){循环体;}
程序调试问题:
1.双击添加断点--à 2.按住小虫子或F12启动调试---à3.F6单步调试(F5单步跳入,跳入程序内部执行,如进入方法内部)
- java中的增强foreach循环(for score:scores){system.out.print(score);}
for(int I : scores){system.out.print(i)}
for循环和foreach循环的区别:
- for循环需要知道循环的次数,foreach不需要知道循环的次数
- foreach用来遍历数组和集合使用更简单
- foreach循环语法格式更简单,无需下标,没有赋值语句,没有循环条件,没有迭代语句,这些操作有系统来操作
- foeach循环不要尝试去改变数组元素的值,因为数组元素赋给了一个临时变量
2.Return 语句的作用:
- 结束当前方法的执行并退出
- 返回调用该方法的语句出
第四章
1.数组在内存中是连续开辟空间的(数组中存放的元素可以是基本数据类型也可以是引用基本数据类型,必须是同一数据类型)
(1) int scores[]={1,2,3,4}; 或 int[] scores={1,2,3,4};
Int[] a={3,5} 定义数组时不指定长度,
(2) Int[] a=new int[]{1,2,3}; 初始化数组时,不指定长度
(3) Int[] a; a=new int[5]; a[1]={2};
数组是一个变量,存储相同数据类型的一组数据
数组的下标从0开始;
数组的编译错误和运行时异常;
2.二维数组的使用
二维数组的定义和初始化:
Int[][] scores=new int[5][5];
Int[][] scores={};
Int[][] scores=new int[][]{{1,2} ,{1,3},{3,4,4} };
Arrays类极其常用的方法:.equals(array1,array2);比较两个数组是否相等
.sort(array);数组的升序排列
.toString();array 将数组的Array转换成一个字符串
.fill(array,val);把 数组array的所有元素都赋值为val;
.copyOf(array,length);将数组array复制成一个长度为length的新数组
.binarySearch(array,val) 查询元素val在数组array中的下标
3.数组中的数据类型是必须“统一”自动转换为同一种数据类型
Int[] array={2,4,’a’}
第六章
1.面向对象
类和对象的关系:就是抽象和具体的关系
类名必须大写
成员变量有默认初始值;
OOA 面向对象分析 OOD面向对象分析
2.面向对象的优点:
1.与人类的思维习惯一致,
2.信息隐藏,提高的程序的可维护性和安全性
3.提高了程序的可重用性
类成员主要包括两部分:成员变量和成员方法
3.方法重载的优点:可以根据参数的不同,采用不同的实现方法,而且不需要编写多个名称,只要记住一个方法名即可
重载条件:方法名相同,参数列表不同(参数个数和参数类型不同,
参数的类型和个数相同,顺序不同)
4.成员变量和局部变量的区别:
- 作用域不同
- 初始值不同(对于成员变量如果在类定义中没有给它赋初值,Java会给她一个默认值,基本数据类型为0,引用数据类型为null,但是Java不会给局部变量赋值必须在定以后赋初值)
- 在同一个方法中,不允许有同名的局部变量
- 局部变量可以和成员变量同名,在使用中局部变量有更高的优先级
5.构造方法:如果自定义了一个或多个构造方法,那么java不会自动添加默认构造方法
1.构造方法必须和类名相同
2.没有任何的返回值类型
3.用来创建对象,初始化数据
6.This关键字的用法:
- 使用this调用成员变量,解决成员变量和局部变量的同名冲突
Person(int age){this.age=age}
- 使用this调用成员方法 this.work();
- 使用this调用重载的构造方法,只能在构造方法中使用,且必须是构造方法第一条语句
Public penguin(String name,String sex){this.name=name;this.sex=sex;}
Public penguin(String name,int health,int love,String sex)
{this(name,sex); this.health=health;this.love=love;}
This只能调用成员属性,实例方法,构造方法,不能调用类变量和类方法,也不能调用局部变量
this能不能调用类方法和类变量:
this可以调用类变量,但是类方法需要通过 类名.类方法 的形式调用。this是一个指向当前对象的指针,而对象是类的一个实例,所以this指向的是某个类的一个当前实例,而不是类本身
7.封装的作用:
- 避免外部操作引起的影响
- 提高松耦合和代码重用性
封装的概念:将属性私有化,提供公共方法来访问私有属性。
8.包的作用:
1.java 文件的组织形式
2.管理java文件
3.解决文件同名问题
4.也是一种访问控制机制
Java.lang包下面的所用工具不需要导入,可以直接引用
9.访问修饰符
修饰符 | 同一类中 | 同一包中 | 子类中 | 任何地方 |
Private | Yes | No | No | No |
无访问修饰符 | Yes | Yes | No | No |
Protected | Yes | Yes | Yes | No |
Public | Yes | Yes | Yes | Yes |
10.在类中声明成员变量:
成员变量可以是Class类型的成员变量
Public class Student{
Private Person person; //类中定义引用数据类型的成员变量
}
第七章
1.继承:使得一个类A能够直接使用另一个类B的属性和方法的途径
类A可以有自己的属性和方法
2.继承的语法:
修饰符 class 子类 extends 父类{ //类定义部分}
子类继承父类的什么:
- 继承public 和protected修饰的属性和方法,不管子类和父类是否在同一个包里。
- 继承默认权限修饰符修饰的属性和方法,但子类和父类必须在同一个包里
子类不能继承:
- 无法继承private修饰的属性和方法
- 无法继承父类的构造方法
- 子类与父类不在同包使用默认访问修饰符修饰的(friendly)
如果从父类继承的方法不能满足子类的需求,在子类中可以对父类的同名方法进行重写。
- 方法的重写或方法的覆盖( overriding )
子类中根据需求对父类继承的方法进行重新编写
- 构成方法的重写的条件:
1.必须具有相同的方法名
2.必须具有相同的参数列表
3.返回值类型必须相同或者是其子类
4.不能缩小被重写方法的访问权限
重载(overloading)和重写(overriding)有什么区别:
重载涉及同一个类中的同名方法,要求方法名相同,参数列表不同,与返回值类型无关
重写涉及的是子类和父类之间的同名方法,要求方法名相同,参数列表相同,返回值类型相同或者是其子类
5.super关键字的使用:
Super代表当前对象的直接父类对象的默认引用
Super必须是出现在子类(子类的一般方法[super.方法名]和构造方法中)而不是其他位置。
Super 和 this 不能同时出现在一个构造方法中
Super指代父类:
- 调用父类成员:成员变量,成员方法,通过super.XXX
2.调用父类构造方法,通过super(),必须出现在构造方法的第一句话
用于访问父类的成员,例如父类的属性,方法,构造方法
访问权限的限制,例如无法通过super访问private成员。
- 继承条件下的构造方法的调用规则:
- 规则一:如果子类的构造方法中没有通过super显示调用父类有参的构造方法,也没有通过this显示调用自身其他构造方法,则系统会默认先调用父类的无参构造方法,在这种情况下,是否写 “ super(); “ 语句效果是一样的
- 规则二:如果子类的构造方法中通过super显示调用父类的有参构造方法,那将执行父类相应构造方法,而不执行父类无参构造方法
- 规则三:如果子类的构造方法中通过this显示调用自身的其他构造方法,在相应的构造方法中应用以上两条规则。
- 在继承条件下,代码的执行,先执行父类无参构造方法后调回子类,在一个类中,先加载父类属性,然后加载父类构造方法,然后子类属性,最后子类构造方法
构造方法不能循环嵌套调用
- Object的equals()方法
相等的属性值:两个对象具有相同的类型,相同的属性
同一个引用对象:两个引用指向同一个对象,即指向同一个地址
注意:如果单纯的使用object类的equals()方法来比较对象是否同一个引用对象,那么是跟操作符“==”没有区别
- 一个类构造方法在如下两种情况中总会执行:
- 创建该类的对象(实例化)
- 创建该类的子类的对象(子类的实例化)
访问修饰符
原标题:java基础知识起步
关键词:JAVA
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。
|