java 基础复习
第一天:
- JRE、JDK是什么?
- Jre是java虚拟机+核心类库
- JDK是jre+java工具开发包。
2. 配置path的作用。
在任何文件下都可以运行java虚拟机的指令
第二天:
- 关键字、标识符 、注释的类型。
- 关键字:系统定义好了的,可以直接拿来用,我们不可以修改。
- 标识符:关键字和保留字。
- 自定义标识符:我们可以修改的自己定义
- 注释:单行注释// 多行注释/**/ 文档注释/**文档注释*/
2. 变量的基本数据类型有那些?数据类型转换?
整型,浮点型,布尔型,字符型。
自动转换和强制转换
第三天:
- if 判断语句
- if( 条件){
- 条件成功运行
- }
2. while循环语句
while (条件) {
条件成功运行
}
- switch语句
- switch (传入的变量) {
- case value:判断
- break;
- default:
- break;
- }
- for循环语句。
- for (int i = 0; i <100; i++) {
- }
- }
- continue、break关键字。
- continue跳出本次循环执行下一次循环
- break终止整个循环
第四天:
- 数组、 直接排序、冒泡排序、折半查找法、
- public class work1 {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- int[] a ={65,23,68,45,2,1};
- //冒泡排序;
- /*for (int i = 0; i < a.length; i++) {
- for (int j = 0; j < a.length-1-i; j++) {
- if (a[j]>a[j+1]) {
- int temp =a[j];
- a[j]=a[j+1];
- a[j+1]=temp;
- }
- }
- }*/
- //选择排序
- /*int k;
- for (int i = 0; i < a.length; i++) {
- k=i;
- for (int j = i+1; j < a.length; j++) {
- if (a[k]<a[j]) {
- k=j;
- }
- if (k==j) {
- int temp =a[i];
- a[i]=a[k];
- a[k]=temp;
- }
- }
- }*/
- //折半查找法
- int temp=68;
- int lest=0;
- int ringt=a.length-1;
- int mid=0 ;
- int flag=0;
- while (flag==0 && lest<=ringt) {
- mid = (lest+ringt)/2;
- if (temp==a[mid]) {
- flag=1;
- }else if (temp<a[mid]) {
- ringt=mid-1;
- }else {
- lest=mid+1;
- }
- }
- for (int i = 0; i < a.length; i++) {
- System.out.println(a[i]);
- }
- System.out.println("在数组中下表是"+mid);
- }
- }
练习题目:
- 目前有数组” int[] arr = {11,2, 4, 2, 10, 11},定义一个函数清除该数组的重复元素,返回一个不能浪费长度的数组.
- public class Work2 {
- public static void main(String[] args) {
- int[] arr={11,2,0,2,10,11,11,2,6};
- int[] arr1=zz(arr);
- for (int i = 0; i < arr1.length; i++) {
- System.out.println(arr1[i]);
- }
- System.out.println("arr.length="+arr.length+"\tarr1.length="+arr1.length);
- }
- public static int[] zz(int[] arr){
- int a=0;
- int b=0;
- int c=961745;
- for (int i = 0; i < arr.length; i++) {
- for (int j = i+1; j < arr.length; j++) {
- if (arr[i]==arr[j]&&arr[i]!=961745) {
- a++;
- arr[j]=c;
- continue;
- }
- }
- }
- int[] arr1=new int[arr.length-a];
- for (int i = 0; i < arr.length; i++) {
- if (arr[i]!=c) {
- arr1[b]=arr[i];
- b++;
- }
- }
- return arr1;
- }
- }
第五天:
- 对象与类的概念。
- 类就对同一类事物的抽象描述
- 对象就是该类具体描述真实存在。
2. 构造方法的基本概念、构造代码块的。构造函数与构造代码块的区别。
构造方法;是系统自己调用的,只会初始化一次,我们可以自己写构造方法,java虚拟机就不创建无参的构造方法出来,我们可以初始化属性
构造代码块;是运行在构造方法里面,可以初始化一些统一的成员,优先构造函数里面代码的执行。
构造
- this关键字、this关键字 的作用?
指调用者本身,如果跟局部变量跟成员变量重名可以使用this区分.
练习题目:
- 使用java类描述一个学生类,学生具备id、name、age三个属性、还有行走的方法。要求一旦创建学生对象,学生对象就具备了属性值。 (考点:构造函数)
class Student{
int id;
String name;
int age;
public Student(int id,String name,int age){
this.id=id;
this.name=name;
this.age=age;
}
public void paly(){
System.out.println("走路");
}
}
public class Work {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student s = new Student(10086, "张政", 20);
System.out.println(s.id+s.name+s.age);
}
}
- 使用java类描述一个学生类,学生具备id、name、age三个属性、还有行走的方法,走的方法中也有一个局部变量name,怎样才可以指定访问到成员变量的name呢?学生还具备一个比较年龄的方法。 (this关键字)
- class Student{
- int id;
- String name;
- int age=20;
- public Student(int id,String name,int age){
- if (age>this.age) {
- this.age=age;
- }else {
- age=this.age;
- }
- this.id=id;
- this.name=name;
- }
- public void paly(){
- System.out.println("走路");
- }
- }
- public class Work {
- public static void main(String[] args) {
- Student s = new Student(10086, "张政", 18);
- System.out.println(s.id+s.name+s.age);
- }
- }
3. 模拟用户登陆注册,查看用户、退出系统。效果以下图。
import java.util.*;
class ZuCe{
static String[] name=new String[50];
static int[] n=new int[50];
public static void paly(){
System.out.println("请选择功能: 注册(A)查看用户(B)退出系统(q)");
Scanner sca = new Scanner(System.in);
String str = sca.next();
if (str.equalsIgnoreCase("a")) {
yi();
}else if (str.equalsIgnoreCase("b")) {
er();
}else if (str.equalsIgnoreCase("c")) {
System.out.println("谢谢你的使用");
}else {
System.out.println("输入错误请重启");
}
}
public static void yi(){
System.out.println("请输入用户名:");
Scanner sca = new Scanner(System.in);
String str = sca.next();
System.out.println("请输入密码:");
Scanner sca1 = new Scanner(System.in);
int sum = sca1.nextInt();
for (int i = 0; i <name.length ; i++) {
if (name[i]==null) {
name[i]=str;
n[i]=sum;
break;
}
}
paly();
}
public static void er(){
System.out.println("当前用户为:");
for (int i = 0; i <name.length ; i++) {
if (name[i]==null) {
break;
}
System.out.println("用户名:"+name[i]+":"+n[i]);
}
paly();
}
}
public class Work4 {
public static void main(String[] args) {
System.out.println("欢迎你来到0217java基础班");
ZuCe.paly();
}
}
第五天:
- static关键字的作用、单例设计模式。
- static 静态修饰符比对象早存在,与类一起存在,用static修饰了之后可以不用创建对象就可以调用
- class DanLie
- {
- String name;
- private static DanLie d = new DanLie();
- private DanLie(){
- }
- public static DanLie paly(){
- return d;
- }
- }
- class Work5
- {
- public static void main(String[] args)
- {
- DanLie d = DanLie.paly();
- d.name="方可获得";
- DanLie d1 = DanLie.paly();
- DanLie d2 = DanLie.paly();
- System.out.println(d.name);
- System.out.println(d1.name);
- System.out.println(d2.name);
- }
- }
2. 继承、继承要注意的细节。
类名 extends 类名
继承 : 可以优化代码,继承要满足is a 条件可以继承父类的属性和方法
不能继承父类的私有变量和构造方法,运行子类的构造方法时会默认调用父类的无参构造。
第六天:
- 抽象类
- abstract class 类名
- 抽象法现在抽象类里面的
- 具有相同的行为但是表现的不一样 我就需要一个抽象法来在父类定义这个行为
- 继承抽象类的子类必须实现抽象方法
2. 接口
Interface 接口名
接口是一个特殊的类
里面的方法都是抽象方法 实现接口的类必须实现里面的方法
类名 implements 接口名
接口里面可以定义属性 默认是用final修饰的、必须初始化实现接口的类可以这个属性.
3. 多态
一个对象的多种表现形态(父类的)
第七天:
- 内部类。
- 内部类。:定义在类中的类,称为内部类,
- 分为局部内部类和成员内部类;
- 成员内部类有两种访问方式:一个在外部类中定义方法创建内部类对象,在通过对象访问,另一个就是在其他类直接创建内部类对象。
- 局部内部类:是定义在方法中的类,只能有一种访问方式,方法创建内部类对象
- 注意点:如果局部内部类访问了方法中的局部变量,该变量要用final修饰
2.自定义异常。
自定义异常:由于java拥有的异常没那么多,有时候需要自定义异常,这个定义的异常要继承自Exception。
异常体系:Throwable所有异常和错误的父类(error 和 exception)
Exception:包括运行时异常和编译时异常。
运行时异常:抛出运行时异常时,可以不用在方法上声明,调用者也可以不处理
编译时异常:抛出编译时异常时,方法上必须声明,调用者也必须处理