Java笔记-JavaSE01

一.基础内容总结

1.标识符

表示类名的标识符用大写字母开始。

表示方法和变量的标识符用小写字母开始,后面的描述性词以大写开始。

所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始 ;

首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合

不能使用关键字作为变量名或方法名。 标识符大小写敏感 

2.数据类型

字符型用' ';字符串型用" "。

long型在数字后面加L;float型在数字后面加f。浮点型有时需要小数点,如10.0.

Java语言的整型常数默认为int型,浮点数默认是Double。

二进制需要0b开头;八进制需要0开头,十六进制需要0x或0X开头。

最好完全避免使用浮点数比较。原由:浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。

boolean类型(一位,0或1),boolean类型有两个值,true和false,不可以 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。

3.类型转换

整型、实型(常量)、字符型数据可以混合运算。
运算中,不同类型的数据先转化为同一类型,然后进行运算。

在把容量大的类型转换为容量小的类型时必须使用强制类型转换。

转换过程中可能导致溢出或损失精度(由于容量不同)

容量小的数据类型可以自动转换为容量大的数据类型。

强制转换类型格式:(数据类型)值。

转换从低级到高级(根据容量):

低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double

4.变量

类变量(静态变量: static variable):独立于方法之外的变量,用 static 修饰。
实例变量(成员变量:member variable):独立于方法之外的变量,不过没有 static 修饰。
局部变量(lacal variable):类的方法中的变量。

局部变量没有默认值,局部变量被声明后,必须经过初始化,才可使用。

类变量和实例变量会自动初始化成该类型的默认初始值(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)。

public class Variable{
    static int allClicks=0; // 类变量
    String str="hello world"; // 实例变量
    public void method(){
        int i =0; // 局部变量
    }
}

变量命名规则:

1. 所有变量、方法、类名:见名知意
2. 类成员变量:首字母小写和驼峰原则 : monthSalary
3. 局部变量:首字母小写和驼峰原则
4. 常量:大写字母和下划线:MAX_VALUE
5. 类名:首字母大写和驼峰原则: Man, GoodMan
6. 方法名:首字母小写和驼峰原则: run(), runRun()

5.运算符

自增(++)自减(--)运算符是一种特殊的算术运算符,在算术运算符中需要两个操作数来进行运算,自增自减运算符是一个操作数,分为前缀和后缀两种。

public static void main(String[] args) {
    int a = 3;
    int b = a++; //执行完后,b=3。先给b赋值,再自增。
    int c = ++a; //执行完后,c=5。先自增,再给b赋值
}

与或非:

位运算符:

6.Scanner

下面是创建 Scanner 对象的基本语法:

Scanner s = new 1 Scanner(System.in);

使用时注意关闭(scanner.close();)

next和nextLine方式区别:next到空格停止(刚开始的空格忽略),后者则为整行输入。(输入enter之前的内容)

可用if或者while结合hasNextInt()或者hasNextFloat()等判断输入情况。(判断下次输入的类型)

7.if

if(布尔表达式 1){
    //如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
    //如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
    //如果布尔表达式 3的值为true执行代码
}else {
    //如果以上布尔表达式都不为true执行代码
}

8.switch

switch(expression){
    case value :
      //语句
      break; //可选,没有 break 语句出现,程序会继续执行下一条case语句,直到有break语句。
    case value :
      //语句
      break; //可选
    //你可以有任意数量的case语句
    default : //可选,default分支不需要break语句。
      //语句
}

9.while和do...while

while( 布尔表达式 ) {
    //循环内容
}
do {
    //代码语句
}while(布尔表达式);

do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。

10.for

for(初始化; 布尔表达式; 更新) {
    //代码语句
}

11.增强for

for(声明语句 : 表达式)
{
    //代码句子
}

主要用于数组或集合的增强型 for 循环,遍历输出数组元素。

12.break和continue

break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。
break 跳出最里层的循环,并且继续执行该循环下面的语句。

continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。
在 for 循环中,continue 语句使程序立即跳转到更新语句。
在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。

break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

13.方法

语法:

修饰符 返回值类型 方法名(参数类型 参数名){
    ...
    方法体
    ...
return 返回值;
}

Java语言中使用下述形式调用方法:对象名.方法名(实参列表)

方法的重载:一个类的两个方法拥有相同的名字,但是有不同的参数列表。

重载的方法必须拥有不同的参数列表。不能仅仅依据修饰符或者返回类型的不同来重载方法。

14.递归

递归:自身调用自身,需要有边界条件停止自身调用

15.数组

声明方法:

dataType[] arrayRefVar; // 首选的方法
或
dataType arrayRefVar[]; // 效果相同,但不是首选方法
//eg.
int[] a;
int[] a = null;

创建方法:

arrayRefVar = new dataType[arraySize];
//eg.
a = new int[7];

声明+创建方法:

dataType[] arrayRefVar = new dataType[arraySize];
//eg.
int[] a = new int[1];

数组索引从0开始。下标的合法区间:[0, a.length-1],如果越界就会报错.

初始化:

//静态初始化
int[] a = {1,2,3};
Man[] mans = {new Man(1,1),new Man(2,2)};
//动态初始化
int[] a = new int[2];//默认全0
a[0]=1;
a[1]=2;

多维数组(二维为例):

格式:

type[][] typeName = new type[typeLength1][typeLength2];
//eg.
int[][] a = new int[1][2];

arraylenght1 为行数,arraylenght2 为列数。

a.length为数组行数(第一维长度),a[0].length是数组列数(第二维长度)。

16.Arrays

Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而"不用"使用对象来调用。

可以参考如下代码:

//打印数组中的全部数
public static void main(String[] args) {
    int[] a = {1,2};
    System.out.println(a); //[I@1b6d3586
    System.out.println(Arrays.toString(a)); //[1, 2]
}
//排序
public static void main(String[] args) {
    int[] a = {1,16,6,12,7,4,8};
    System.out.println(Arrays.toString(a));
    Arrays.sort(a);
    System.out.println(Arrays.toString(a));
}
//填充
public static void main(String[] args) {
    int[] a = {1,2,323,23,543,12,59};
    Arrays.sort(a); //使用二分法查找,必须先对数组进行排序
    Arrays.fill(a, 2, 4, 100); //将2到4索引的元素替换为100
    System.out.println(Arrays.toString(a));
}

二.练习代码

1.编辑一个计算器 通过用户输入的两个数据实现加减乘除功能。

package homework;

import java.util.Scanner;

//编辑一个计算器 通过用户输入的两个数据实现加减乘除功能
public class Calculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double a = 0;
        double b = 0;
        String str = null;
        if (scanner.hasNext()) { //输入需要计算的表达式形式如  9 * 1 (字符之间用空格隔开,回车键计算结果)
            a = scanner.nextDouble();
            str = scanner.next();
            b = scanner.nextDouble();
        }
        double result = calculate(a,b,str);
        System.out.println("计算结果是:"+result);
        //System.out.println(a);
        //System.out.println(b);
        //System.out.println(str);

        scanner.close();
    }
    public  static double calculate(double a,double b,String str){
        double result = 0;

        switch (str){
            case "+":    // 注意使用""
                result=a+b;
                break;
            case "-":
                result=a-b;
                break;
            case "*":
                result=a*b;
                break;
            case "/":
                result=a/b;
                break;

        }
        return  result;
    }

}

2.使用冒泡排序法,对输入的数字进行升序排序,最后输出顺序

package array;

import java.util.Arrays;
import java.util.Scanner;

//编写冒泡排序算法
//1.输入数据
//2.排序
//3.输出
public class Practice {
    public static void main(String[] args) {
        System.out.println("输入所需要排序的数组");
        Scanner s = new Scanner(System.in);
        Double[] a = new Double[100000]; //支持最多输入10000个数字
        int b =0;//b用来记录输入的数字的个数
        //每输入一个数字按一次回车,若输入完毕则输入非数字即可结束输入
        //或者将全部数字一次性输入,数字之间空格隔开,输入任何一个非数字结束输入
        while(s.hasNextDouble()){
            a[b]=s.nextDouble();//记录输入的数字
            b++;//记录输入数字的个数
        }
        double[] c = new double[b];//创建新的数组c 去a中多余的0,对输入的数字重新记录
        for (int i = 0; i < b; i++) {
            c[i]=a[i]; //得到输入的数组c
        }
        c=sort(c);//排序
        //System.out.println(Arrays.toString(c));//输出排序后的数组
        System.out.print("将输入数据从小到大排序,其顺序为:" + c[0] + " ");
        for (int i = 1; i <c.length ; i++) {
            System.out.print(c[i] + " ");
        }
        s.close();//关闭
    }
    //创建排序方法 (冒泡排序法 升序排列)
    public static double[] sort (double[] c){
        double temp= 0;//定义缓存变量
        for (int i = 0; i < c.length-1; i++) { //需要比较几轮
            for (int j = 0; j < c.length - 1-i; j++) { //每论需要比较几次
                if (c[j] >= c[j + 1]) {//升序换位 若相同则顺序保持不变
                    temp = c[j];
                    c[j] = c[j + 1];
                    c[j + 1] = temp;
                }
            }
        }
        return c;
    }
}


三.内容来源

Java课程与笔记来源:

【狂神说Java】Java零基础学习视频通俗易懂_哔哩哔哩_bilibili

www.kuangstudy.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值