Java基础

创建第一个程序

打开Eclipse,创建HelloWorld程序
打开Eclipse选择菜单 File --> New --> Java Project新建工程
在这里插入图片描述
填写工程名称为TestJava
右键工程名创建类
在这里插入图片描述
填写Package包名为com.cz
填写Name类名Test
在这里插入图片描述
成功创建包
写输入代码
在这里插入图片描述
右键运行
在这里插入图片描述
在这里插入图片描述
运行结果显示
在这里插入图片描述

变量、数据类型

变量
变量的概念:内存根据数据不同类型开辟的这个空间叫做变量
变量名:用于快速找到内存中变量空间位置取得名字

变量的使用
1、声明变量,就是在内存开一个空间
语法:数据类型 变量名;(空格和分号不能少)
2、变量赋值,就是将数据放到开辟的这个空间
语法:变量名 = 变量值;
3、使用变量
比如:System.out.println(变量名);

数据类型
数值型
1、 整型(int):用于存储整数,整数的类型
byte字节型,short短整型,long长整型

2、 非整型:用于存储小数,小数的类型
双精度浮点型(double):小数的长度比较长
单精度浮点型(float):小数的长度短一些

非数值型
1、字符型(char):用于存储单个字符,都需要使用英文状态的单引号括起来;比如:‘男’、‘女’、‘开’、‘关’

2、字符串型(String):用于存储一串字符,存储0~n个字符,都需要用英文状态下的双引号括起来;比如:“王者”

类型转换
自动类型转换
1、必须两种类型互相兼容,比如:都是数值类型int和double,double和float
2、转换成的类型一定要比被转换的类型要大,比如:int转换成double,float转换成double

强制类型转换
语法:数据类型 变量名 = (数据类型)变量名;

运算符

1、赋值运算符 =,将右边的值赋给左边
2、算术运算符+、-、、/、%,数学运算一样,先、/、%,后+、-
3、关系运算符(比较运算符):>、<、>=、<=、==、!=
4、逻辑运算符

boolean类型(布尔类型):用于比较运算,只有两个值(true和false)

运算符的优先级
1、最高优先级,英文状态下的小括号()
2、最低优先级,赋值运算符=
3、算术运算符>关系运算符>逻辑运算符>赋值运算符

选择结构

if

if-else语句主要是根据if的判断结果,选择不同的分支路径,可以if-else嵌套,也可以单独使用if语句,还可以使用 if-else if-else if-…-else进行嵌套

if基本选择结构

语法:if(要满足的条件){
如果条件为true的时候,进入大括号中
满足条件之后得到的结果,不满足条件不会去执行
}
如果条件为false的时候,绕过大括号执行外面的
条件只能是boolean类型的数据
if-else选择结构

语法:if(要满足的条件){
满足条件得到的结果
}else{
不满足条件的得到的结果
}
多重if选择结构

适用于很多条件分支的情况
语法:if(要满足的条件1){
满足条件1得到的结果
}else if(要满足的条件2){ //默认不满足条件1
满足条件1得到的结果
}else if(要满足的条件n){ //默认不满足条件2
满足条件n得到的结果
}else{ //默认不满足条件n
不满足所有条件得到的结果
}
只要找到一个满足的条件,执行完之后,结束选择结构
嵌套if选择结构

适用于在一个判断的基础再做一次判断的情况
语法:if(要满足的条件1){
满足条件1得到的结果

	if(要满足的条件2){
	满足条件2得到的结果
	}
	
}else{
不满足条件1得到的结果
}

==只能够比较数值类型,比较字符串是否相等,使用.equals(“要等于哪个字符串”);
比如:sex.equals(“王”);10 == 10

随机产生
在这里插入图片描述

switch

当需要判断的条件比较多时会出现很多的if-else,这种代码的可读性比较差,所以我们可以选择使用switch语句

public static void testSwitch(int color) {
		switch (color) {
		case 1:
			System.out.println("......................");
			break;
		case 2:
			System.out.println("......................");
			break;
		case 3:
			System.out.println("......................");
			break;
		case 4:
			System.out.println("......................");
			break;
		default:
			break;
		}
	}

跳转语句的使用
break关键字:(通常和if选择结构一起使用)
在switch使用break表示结束switch选择结构去执行选择结构外的代码
在循环中使用break表示结束循环结构去执行循环结构外的代码

continue关键字:(通常和if选择结构一起使用)
continue只能够在循环结构中使用
在循环中使用continue表示结束当前这一次循环,然后开始下一次循环

循环结构

for

语法:for(表达式1;表达式2;表达式3){
循环操作
}
  • 表达式1:循环从哪里开始,也就是循环的初始值,比如:int num = 1
  • 表达式2:循环的条件,也就是循环到哪里结束,比如:num <100
  • 表达式3:计数器,也就是每循环一次,初始值产生怎样的变化,比如:num++

每个表达式之间用分号隔开,每个表达式都可以不写,但是分号不能省略

for循环的执行顺序
①先去执行表达式1,也就是先去找初始值
②第二步去执行表达式2,也就是去找循环条件
③第三步去执行循环操作
④最后才去执行表达式3,也就是最后才实现初始值变化的过程

public static void testFor() {
		int[] array = new int[10];
		for(int i=0;i<10;i++) {
			array[i] = i;
		}
		
		for(int j:array) {
			System.out.print(j+" ");
		}
	}

在这里插入图片描述

While

while语句是循环语句的另一种方式,当while后面的条件成立时继续循环,当条件不成立是时退出循环,也可以使用do-while嵌套,在do后面首先执行一次循环再到while中进行循环是否继续的检测。

public static void testWhile() {
		int[] array = new int[10];
		int i = 0;
		while(i<array.length) {
			array[i] = i;
			i++;
		}
		
		int j = 0;
		do {
			System.out.print(array[j]+" ");
			j++;
		} while (j<array.length);
	}

在这里插入图片描述
while、do-while和for循环的区别
执行顺序不同
while和for循环:先判断,再执行
do-while循环:先执行,再判断

程序调试
断点调试的步骤:(每次调试后取消掉断点)

  1. 设置断点:在左侧边栏的位置点击鼠标左键两次,可以生成一个断点
  2. 进入调试模式:点击右键,选择debug as进入debug调试模式,程序会在设置断点的地方停下来
  3. 单步执行,也就是一行一行的执行代码,按F6单步跳过执行代码
  4. 观察变量值的变化
  5. 找出错误的位置
  6. 改正错误
  7. 运行看结果是否正确

二重循环:在一个循环中再使用一个循环结构
循环特点:外层循环循环一次,内层循环循环一遍(也就是从开始到结束循环完)
while循环,do-while循环和for循环之间可以相互嵌套,也就是说while循环可以放while,
do-while和for循环,其他两种一样

二重循环中跳转语句的使用

continue:如果continue在内层循环中,表示结束内层循环的本次循环,开始内层循环的下一次循环,如果在外层循环表示结束外层循环的本次循环,开始外层循环的下一次循环,也就是说,continue在哪一个循环的{}中,就结束哪一个循环的本次循环,开始该循环的下一次循环。

break:如果break在内层循环中,表示结束内层循环的整个循环,开始执行内层循环外面语句,如果在外层循环中表示结束整个循环,也就是说,break在哪个循环中,结束的就是哪个循环的整个循环。

数组

数组的定义

数组的概念:在内存中开辟的一串连续的空间,用来存储相同数据类型的

数组的基本要素
1、标识符(数组名):数组的名称,用来区分不同的数组
2、数组元素:存放在数组空间中的数据
3、数组下标:对数组中的空间进行编号,区分每个空间,数组下标从0开始,可以通过数组下标找到对应的空间
4、元素类型:数组的数据类型

声明数组:告诉计算机数组是什么类型
语法:数据类型[] 数组名 或者 数据类型 数组名[]
比如:String[] args;int[] nums,数组名的命名方式和变量命名方式一样

分配空间:告诉计算机要开辟一串连续的多长的空间
语法:数组名 = new 数据类型[数组长度];
比如:scores = new int[30];
第一步和第二步可以一起写

数据类型[] 数组名 = new 数据类型[数组长度];

赋值:向开辟好空间里面去存放数据
语法:数组名[数组下标] = 数据;
比如:scores[0] = 60;//表示将数组第一个空间存放了60这个整数scores[1] = 80;

直接声明数组时就进行赋值
语法:数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据n};
      数据类型[] 数组名 = {数据1,数据2,数据n};
      注意:如果在声明数组时就直接赋值,那么不要写数组长度
比如:int[] scores = new int[]{60,80,100,50,60,70};

通过循环的方式动态的录入数据
循环从初始0开始,到数组的最大长度结束,每次加1
for(int i = 0;i < 5;i++){
	System.out.println("请输入第"+(i+1)+"名学生的成绩:");
	scores[i] = input.nextInt();
}

数据的使用:将存放在数组空间中的元素拿出来使用
使用循环的方式将存放在每个空间中数据拿出来使用

for(int i = 0;i < 5;i++){
	System.out.println("第"+(i+1)+"名的学生成绩为"+scores[i]);
}
数组名.length表示数组的长度
比如:int[] scores = new int[10];
      scores.length = 10;//数组长度为多少,该值就为多少

数组的排序

使用Arrays类,使用Arrays的步骤
1、找到有Arrays的商店,语法:import java.util.Arrays;
2、Arrays是一个公用的工具,不需要够买,只要去使用就可以,语法:Arrays.sort(数组名);
它会将该数组进行一个升序的排列

遍历数组
1.

public class Main {
    public static void main(String[] args) {
        int[] ns = { 1, 4, 9, 16, 25 };
        for (int i=0; i<ns.length; i++) {
            int n = ns[i];
            System.out.println(n);
        }
    }
}
public class Main {
    public static void main(String[] args) {
        int[] ns = { 1, 4, 9, 16, 25 };
        for (int n : ns) {
            System.out.println(n);
        }
    }
}

冒泡排序
在这里插入图片描述
内置排序
在这里插入图片描述
二维数组
二维数组就是数组的数组。

public class Main {
    public static void main(String[] args) {
        int[][] ns = {
            { 1, 2, 3, 4 },
            { 5, 6, 7, 8 },
            { 9, 10, 11, 12 }
        };
        System.out.println(ns.length); //3
        System.out.println(ns[1][2]);//7

		 System.out.println(Arrays.deepToString(ns));//打印二维数组

    }
}

面向对象

1.OO:Object Oriented表示面向对象的意思

2.世界由什么组成:水,陆地,草,人,动物,植物,楼房,汽车等等由所有一切真实存在的东西组成,这些真实存在的东西就叫作对象

属性:就是对象所具有特征
方法:就是对象所执行的行为或操作
对象:用来描述真实存在事物的一个实体,由一组属性和方法组成

封装:对象的属性和方法通常封装在一起,共同体现事物的特性,两者不可分割

类:将对象共同的属性和方法抽取出来就是类
类是模子,定义对象所具有的属性和方法

3.类和对象的关系:
类是抽象的,对象是具体的实体
对象是类的一个实体,类是对象的抽象概念

定义一个类的步骤
1、新建一个class,给这个class取一个类名,名字和你想要定义的类型一致类名的取名方式,使用帕斯卡命名法,所有单词的首字母大写
2、定义类的属性
3、定义类的方法

使用定义好的类
1、新建一个对象,语法:类名 对象名 = new 类名();
比如:Car car1 = new Car();
2、通过“.”操作符来使用这个对象的属性和方法

方法

无参方法:在方法名()的括号中没有参数的方法
有参方法:在方法名()的括号中有参数的方法

定义有参方法的语法:

语法:访问修饰符 返回值类型 方法名(参数1、参数2、参数3…参数n){
方法体(具体实现方法的过程)
}

.........................................................

定义无参方法的语法:

语法:返回修饰符 返回值类型 方法名(){
//具体实现方法的操作
}

public void TestHello(){
//具体实现方法的操作
System.out.println(“你好”);
}

1、访问修饰符(在哪些地方能够使用这个方法),public公共的,最高级别
2、返回值类型,执行完方法后能够得到什么数据
void,表示没有返回值,也就是没有任何数据返回
如果有数据返回,那么就需要使用return关键字返回一个数据,并且返回的数据类型和返回值的数据类型一致
3、方法名(),方法名表示方法的名字
4、方法体:具体实现方法的操作
5、参数:实际就是声明的一个变量,声明的变量使用“,”隔开在定义方法的时候,方法中的参数只是进行了声明,并没有赋值,这个参数就叫做形式参数,也就是形参;
在调用方法的时候,对方法中参数进行赋值,这个参数就叫作实际参数,也就是实参

调用带参数的方法

  • 同一类中调用同一类中的方法,直接方法名()调用
  • 不同类中调用不同类中的方法,先new一个对象,再通过对象名.方法名()的方式调用
  • 必须和定义方法的参数个数相同,并且数据类型必须一致,顺序也要和定义的位置一致

编写方法步骤

  1. 先定义方法的访问修饰符,先写没有返回值类型,定义方法名,方法名的命名采用见文识意的方式
  2. 定义方法体,也就是写具体实现方法的操作
  3. 判断方法是否有返回值,如果有,添加return关键字返回该数据,并修改返回值类型

方法的调用
1、在同一个类调用同一类中的方法,只需要通过方法名()就可以指直接调用

2、在不同类中调用方法,需要先new一个需要调用方法的类的对象,然后通过对象名.方法名的方式去调用方法调用方法的时候,实际上就是去执行方法体中的代码

常见错误
1、返回值数据类型必须和返回值类型一致
2、不可以返回多个值,也不能写多个返回值类型
3、定义方法不能够相互嵌套
4、程序逻辑代码(顺序、选择、循环结构)只能写在方法体中

构造方法

创建实例的时候,实际上是通过构造方法来初始化实例的。

public class Main {
    public static void main(String[] args) {
        Person p1 = new Person("Xiao Ming", 15); // 既可以调用带参数的构造方法
        Person p2 = new Person(); // 也可以调用无参数构造方法
    }
}

class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public String getName() {
        return this.name;
    }

    public int getAge() {
        return this.age;
    }
}

由于构造方法是如此特殊,所以构造方法的名称就是类名。构造方法的参数没有限制,在方法内部,也可以编写任意语句。但是,和普通方法相比,构造方法没有返回值(也没有void),调用构造方法,必须用new操作符。

方法重载

class Hello {
    public void hello() {
        System.out.println("Hello, world!");
    }

    public void hello(String name) {
        System.out.println("Hello, " + name + "!");
    }

    public void hello(String name, int age) {
        if (age < 18) {
            System.out.println("Hi, " + name + "!");
        } else {
            System.out.println("Hello, " + name + "!");
        }
    }
}

这种方法名相同,但各自的参数不同,称为方法重载(Overload)。
注意:方法重载的返回值类型通常都是相同的。
方法重载的目的是,功能类似的方法使用同一名字,更容易记住,因此,调用起来更简单。

继承

多态

抽象

接口

核心类

泛型

集合

IO

多线程

异常处理

日期与时间

单元测试

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值