1.java基础

记录一下狂神讲的Java基础笔记和自己的一些感悟!

1.标识符注意事项

  1. 所有标识符都应该以字母美元($) 、下划线(_)开始
  2. 首字符之后可以是字母、美元符($) 、下划线(_)或数字的任何字符组合
  3. 不能使用关键字作为变量名或方法名
  4. 标识符是大小写敏感的,即区分大小写
  5. 可以使用中文命名,但是很low,也不建议使用拼音,更low
  6. 标识符起名字应该做到见名知意
  7. 下面是一些合法的表示符举例:
  • 合法:age、$salary._value.1_value
  • 非法:123abc、-salary、#abc

idea常用快捷键:
ctrl + D:复制当前行
ctrl + R:替换

2.数据类型

  • 强类型语言:所有变量都必须先定义后才能使用
  • Java的数据类型分为两大类:基本类型引用类型

在这里插入图片描述

2.1八大基本数据类型:

  1. byte
  2. short
  3. int
  4. long
  5. float
  6. double
  7. char
  8. boolean

注意:String不是基本数据类型,它是类

2.2 什么是字节

  • 位(bit):是计算机内部数据储存的最小单位,11001100是一个八位二进制数。
  • 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示, 1B (byte,字节)= 8bit(位)
  • 字符:是指计算机中使用的字母、数字、字和符号 1bit表示1位, 1Byte表示一个字节1B=8b。
  • 1024B=1KB
  • 1024KB=1MB 1024M=1GB.

2.3 整数拓展

  • 二进制:0b
  • 八进制:0
  • 十进制:
  • 十六进制:0x
 int i = 10;//默认十进制
 int i2 = 010;//八进制:0
 int i3 = 0x10;//十六进制:0x
 System.out.println(i);//10
 System.out.println(i2);//8
 System.out.println(i3);//16

2.4 浮点数拓展

面试题:银行业务字母怎么表示钱? BigDecimal(数学工具类)
float 有限﹑离散舍入误差大约 接近但不等于
double是有问题的,最好避免使用浮点数进行比较

float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);//false
float d1 = 2332323232323232f;
float d2 = d1+1;
System.out.println(d1==d2);//true
//精度问题,最好完全避免使用浮点数进行比较

注意:最好完全避免使用浮点数进行比较

2.5 字符拓展

字符扩展:所有字符本质还是数字

char c1 = 'a';
char c2 = '中';
System.out.println(c1);//a
System.out.println((int)c1);//97
System.out.println(c2);//中
System.out.println((int)c2);//20013

2.6 布尔值扩展

boolean flag = true;
if(flag==true){} //新手
if(flag){}	//老手这样写 Less is More(代码要精简易读)

注意点:

  1. 不能对布尔值进行转换
  2. 不能把对象类型转换为不相干的类型
  3. 在把高容量转换为低容量的时候,使用强制类型转换
  4. 转换的时候可能存在内存溢出,或者精度问题!
  • byte、short、char->int->long->float->double(低->高)
  • 强制转换:高->低
  • 自动转换:低->高

2.7 用户交互Scanner

通过Scanner类的next()与nextLine()方法获取用户的字符串,读取前一般用hasNext()与hasNextLine()判断是否还有输入的数据。

public static void main(String[] args) {
    //创建一个扫描器对象
    Scanner scanner = new Scanner(System.in);

    System.out.println("使用next方式接收");
    //判断用户有没有输入字符串
    if(scanner.hasNext()){  //使用hasNextLie()会接收一行 "hello word"
        //使用next方式接收
        String str = scanner.next(); // 程序会等待用户输入完毕
        System.out.println("输入的内容为:"+str);
        //input: hello word
        //输入的内容为:hello
    }
    //凡是属于IO流的类如果不关闭会一直占用资源
    scanner.close();
}
  • next():不能得到带有空格的字符串 输入Hello world! 只能得到Hello
  • nextline():以Enter为结束符,输入回车之前所有字符,可以获得空白

3.变量与常量

  • 变量:就是可以变化的量
  • Java是一种强类型语言,每个变量都必须声明其类型
  • java变量是程序中最基本的存储单源,其要素包括变量名、变量类型和作用域

3.1 变量的作用域

根据变量的作用域可分为下列三种变量:

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

3.2 常量

  • 关键词:final
  • 常量名一般使用大写字符
final 常量名 =final double PI = 3.14;
//修饰符不存在先后顺序
static final double PI = 3.14;

变量的命名规范:

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

4.运算符

算数运算符
	+ - * / % ++ --
赋值运算符
    = += -= *= /=
关系运算符
    > < >= <= == != instanceof
逻辑运算符
    && || !
位运算符
    & | ^ ~ >> << >>>
条件运算符
    ? :
Math(工具类)
    2^3 = 8
    Math.pow(2,3) = 8

4.1位运算

A = 0011 1100
B = 0000 1101
A&B 0000 1100  //A B做与运算
A|B 0011 1101  //A B做或运算
A^B 0011 0001  //异或(相同得0,不同得1)
~B  1111 0010  //取反

5.包机制

一般利用公司域名倒置做包名

使用import导入包

com.kuang.operation
com.kuang.*(这个包下所有的类)

6.方法

用一段用来完成特定功能的代码片段

Java是值传递还是引用传递?答:值传递

6.1 方法的重载

方法重载的规则:

  • 方法名称必须相同
  • 参数列表必须不同(个数不同、类型不同、参数排列顺序不同等)
  • 方法的返回类型可以相同也可以不相同
  • 仅仅放回类型不同不足以称为方法重载

6.2 可变参数

可变参数实质是一个数组
可变参数必须放在参数列表的最后一个,否则会报错

package chapter03;

public class Demo03 {
    public static void main(String[] args) {
        Demo03 demo03 = new Demo03();
        demo03.test(1,2,3,42,123,341,2,1,32,123,41324,342,34,1);
    }
    public void test(int x,int... i){//可变参数放在参数列表的最后一个,否则报错
        int res = i[0];
        for(int j=1;j<i.length;j++){
            if(i[j]>res)
                res = i[j];
        }
        System.out.println(res);
    }
}

6.3 递归

  • 自己调用自己,必须要有一个出口
  • java都是栈机制
package chapter03;

//学习递归思想:求出4的阶乘
public class Demo04 {
    public static void main(String[] args) {
        System.out.println(fun(4));
    }

    private static int fun(int num) {
        //出口
        if(num==1)
            return 1;
        else{
            return num*fun(num-1);
        }
    }
}

7. 数组

  1. 数组就是一组数
  2. 数组从0开始,比如创建10个单元,则为0~9,没有10,合法区间是[0,length-1]
  3. 数组对象本身在堆中,数组变量属于引用类型
  4. Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException:是数组越界了
package chapter04;

public class Demo01 {
    public static void main(String[] args) {
        int[] nums;//1.声明数组,但是还没分配空间
        //int[] nums = new int[10];
        //声明和分配空间可以写在一起
        nums = new int[10];//2.可以存放10个int类型的数字

        //3.赋值
        for(int i=0;i<nums.length;i++){
            nums[i] = 1+i;
        }
        for(int i=0;i<nums.length;i++)
            System.out.println(nums[i]);
    }
}

7.1数组的三种初始化

  • 静态初始化:
  • 动态初始化:
  • 默认初始化:基本为0
package chapter04;
public class Demo02 {
    public static void main(String[] args) {
        //静态初始化:创建 + 赋值
        int[] a = {1,2,3,4,5,6,7,8};
        System.out.println(a[0]);//1

        //动态初始化
        int[] b = new int[10];
        b[0] = 10;
        System.out.println(b[0]);//10

        //默认初始化
        int[] c = new int[10];
        System.out.println(c[0]);//0
    }
}

7.2 数组的使用

  • 普通的for循环
  • for-each循环
  • 数组作为方法入参
  • 数组作为返回值
package chapter04;
public class Demo03 {
    public static void main(String[] args) {
        int[] arrays = {1,2,3,4,5};
        print(arrays);
        print2(arrays);
        print(reverse(arrays));
    }
    // 1.for-i循环
    public static void print(int[] nums){
        for (int i = 0; i < nums.length; i++) {
            System.out.println(nums[i]);
        }
    }
    //2.for-each循环
    public static void print2(int[] nums){
        for (int num: nums) {
            System.out.println(num);
        }
    }
    //3数组方法入参、返回
    //反转数组
    public static int[] reverse(int[] arrays){
        int[] result = new int[arrays.length];
        //反转操作
        for (int i = 0,j = result.length-1; i < arrays.length; i++,j--) {
            result[j] = arrays[i];
        }
        return result;
    }
}

7.3 二维数组

package chapter04;
public class Demo04 {
    public static void main(String[] args) {
        int [][] array = {{1,2},{3,4},{5,6}};
        printAarray(array[1]);
    }
    
    public static void printAarray(int[] array){
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i]+" ");
        }
    }
}

7.4 Arrays类

注意:Arrays.fill和数组一样也是左闭右开

package chapter04;
import java.util.Arrays;
public class Demo05 {
    public static void main(String[] args) {
        int[] a = {11,54,12,4,653,12341,7464,14,5598,2411};
        System.out.println(a);//[I@10f87f48
        //打印数组元素Arrays.toString
        System.out.println(Arrays.toString(a));
        //排序
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));
        //数组填充(和数组一样左闭右开)
        Arrays.fill(a,2,4,88);
        System.out.println(Arrays.toString(a));
    }
}

7.5 冒泡排序

package chapter04;
public class Demo06 {
    public static void main(String[] args) {
        int[] a = {11,54,12,14,653,12341,7464,14,5598,2411};
        print(a);
        a = fun_sort(a);
        System.out.println("");
        print(a);
    }
    //冒泡排序
    public static int[] fun_sort(int[] a){
        for (int i=0;i<a.length-1-i;i++){
            for (int j=i;j<a.length;j++){
                if (a[i]>a[j]){
                    int t = a[i];
                    a[i] = a[j];
                    a[j] = t;
                }
            }
        }
        return a;
    }
    //输出数组元素
    public static void print(int[] a){
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i]+" ");
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cycyong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值