资讯详情

Java基础知识点整理


typora-copy-images-to: ./

Java基础知识点整理

JDK输出

System.out.println() //小括号可以没有内容, 作为换行符 System.out.print() ///小括号必须有内容,否则报错

转义符

\

注释

学习写注释的习惯

注释位置: 1) 类名 2) 方法上 3) 在复杂的逻辑代码上

变量

变量的三素:

变量名(获取数据) 数据类型(控制变量的存储空间) 变量值

注意:

String引用数据类型

整数默认int类型,默认浮点数double型

char类型值: 只能是单字符, 必须使用单引号 ‘a’ ‘中’ ‘1’ ‘ab’ 错误

变量的使用

声明、赋值、使用

注意:

1):如果变量是 byte: 赋值的数字 ~128 - 127 之间, 若数字超出此范围,可直接赋值, 直接赋值报错(直接!

2):float num = 1.2; 1.2 double类型, 相当于把double类型转换为float类型, 但是float类型比double低

相当于将高转换为低, 不能自动转换,报错

3):char值只能是单字符,需要单引号引起 ‘a’ ‘1’

转换数据类型
  1. 从低到高 , java 自动转换

  2. 从高到低: 无法自动转换, 需要手动强制转换: 数据类型(低) 变量名 = ()值(高值);

double a = 1.2; float b = (float)a; int c = (int)a; 
面试题: char为什么能保存中文字符?

电脑里保存的不是中文字符,而是ASCII代码,每个中文字符对应一个ASCII码

进制转换

Scanner输入

使用步骤

1):导入类别 Scanner类, 位于java.util包: import java.util.Scanner; String/System 不需要导包, 位于java.lang包中的类程序将自动加载

2):创建Scanner Scanner input = new Scanner(System.in); (input可自定义))

3):调用next相关方法, 进行输入 input .nextInt() input.nextDouble()等等,

注意:

不能输入char ,没有nextChar() 这个方法,

next() 输入字符串 nextLine() 输入字符串

细节:

next() 输入有效字符串, 不包含 空格,tab,回车, 遇到空格,tab,回车时,输入结束,但空间,tab,回车及以下内容将保存在缓存中

nextLine() 包含空格的输入字符串, 但是nextLine() 如果前面还有别的next() nextInt() nextDouble()…等方法时,nextLine() 不起作用, 无法输入

解决方案:
  1. nextLine() 放在所有的next方法之前
  2. nextLine() 不在第一位: 使用nextLine() 再加一个nextLine()

运算符

算数运算符 - * / %

:数值类型 结果为数值类型的数值类型; 任意类型 结果是字符串类型

int a = 10; int b = 20;  System.out.println(a b “101”); // 30101  System.out.println(“101” a b); //1011020  

/:整数/整数,结果取整; 当有浮点数时,结果是小数

int num1 = 5; int num2 = 2;  System.out.println(num1 / num2); // 2

double num3 = 2;

System.out.println(num1 / num3); //2.5

System.out.println((double)num1 / num2); // 2.5

System.out.println(num1 / (double)num2); // 2.5

System.out.println((double)(num1 / num2); // 2.0

%:作用1:判断是否整除 2.得到某位数值

1234 % 10 ,得到个位

1234 / 10 %10 ,得到十位

1234 /100 %10 ,得到百位

1234 / 1000 % 10 ,得到千位

赋值运算符 =

a = a+1; 与 a+=1; 的区别

赋值符号与算术符号组合的赋值符号存在 隐式数据类型转换,a += b; 把a+b的结果 转换为a的类型

int a = 1; double b = 2; a = a+b;//报错

a+=b;// a=3 (a+b)的结果转换为int类型也就是a的类型

-= *= /= %=同理

面试题可能出现
int a = 2;

byte b = 1;

b = b+a;//报错

b +=a;//b=3

比较运算符> < >= <= == !=

使用场景

1):条件语句、循环语句 运算结果:boolean类型

逻辑运算符&& || ! & |

使用场景

1):条件语句、循环语句、连接多个比较表达式 运算结果:boolean类型

&&与&、||与|的区别

&&、||存在短路运算,&、|不存在短路运算,推荐使用&&、||

面试题
int a = 10;

int b = 6;

boolean rs = (a++ >11)&&(b++ >5);//10>11 false

System.out.println(rs);//false

System.out.println(a,b);//a = 11;b = 6

boolean rs = (a++ >11)&(b++ >5);

System.out.println(rs);//false

System.out.println(a,b);//a = 11;b = 7

三目运算符 条件(boolean的表达式)?值1:值2

三目运算符可以嵌套: 条件1?值1:(条件2?值2:值3),最好不要嵌套超过两次,可读性差

对if-else 某些场景的简化, if-else返回结果, 可以使用三目运算替换

自增自减运算符++ –

++变量 变量++ --变量 变量–

++a : a = a+1; (++a) = a

a++:(a++)= a; a = a+1

位运算& | ^(异或) !

异或特征

一个数异或某个数两次,得到自己(简单得密码加密)

拓展

>>右移

<<:左移

java: 十进制, 八进制, 十六进制:

int a = 123; //十进制数

int b = 0123; //八进制

int c = 0x123; //十六进制

分支语句

  1. if 分支语句: 条件语句 最重要的
  2. switch分支语句: 条件语句: 等值判断

if语句

注意:

如果 if,else, else if大括号中只有一行代码, 可以省略大括号, 但是最好不省略,提高可读性

switch语句 等值判断

注意

1):case的值不能相同, 值唯一

2):break: 可以省略, 也可以不省略

3):default: 可有可无, default 可以在最前面, 也可以在最后面, 推荐写在最后面, 可以省略break,如果写在最前面, 一定要写 break;

循环

for循环

for(表达式1 ①;表达式2 ②;表达式3 ③){ 
        
    //循环要做的事情 ④
}

表达式1: 初始化循环变量, 给循环变量赋值, 只执行一次

表达式2: 循环条件表达式, boolean类型的结果, 如果true: 表示继续循环, 如果false:结束循环

每循环一次执行一次

表达式3: 修改循环变量, 如果不改,可能出现死循环,每循环一次执行一次

1 --> 2 --true-> 4 --> 3 --> 2 -false-> 结束
使用步骤
  1. 判断是否需要使用循环, 看问题中是否有重复做的事情
  2. 找循环条件
  3. 找循环要做的事情
难点: 把循环条件,循环要做的事情转换为代码
细节: 表达式能省略, 两个分号一定不能省略
for循环的表达式细节
  1. 表达式1 可以省略, 可以把表达式1 写在for循环的外面, 提升循环变量的作用域

  2. 表达式2可以省略, 默认永远为true, 出现死循环, 避免出现死循环, 也可以在循环体中使用 break关键字退出循环

  3. 表达式3可以省略, 循环变量没有改变,可能出现死循环, 也可以在循环体写表达式3

  4. 三个表达式都省略, 但是两个分号不能省略

for(;😉{ //死循环

​ //在循环体中使用break退出循环

}

while循环

//把for循环的表达式1 写在循环之外, 表达式3写循环体的for循环

for/while特征:

先判断,后循环, 可能一次都不执行, 开始循环条件为false

do-while循环

do-while 特征

先循环,后判断, 循环体至少执行一次

语法:

do{

//循环体

}while(循环条件);

注意: while后面小括号之后有一个分号,不能省略

IDEA的使用

快速遍历数组

数组名.fori

数组

存储一组相同类型的值,长度由创建数组的时候指定 缺点:固定长度

数组元素

数组名、数据类型(基本数据类型,类类型,对象)、元素、下标(从0开始)、数组的长度

使用数组(一维数组)

1):声明数组(没有开辟空间) 语法格式:① 数据类型[ ] 数组名 ; ② 数据类型 数组名[ ];

2):开辟空间 (指定数组的长度,开辟的空间是连续的) 语法格式: 数组名 = new 数据类型[长度]

注意:开辟空间的同时,会根据数据类型将元素的值初始化,int的初始值为0,float、double初始值为0.0, char:\u00, boolen:false, String/类类型:null

3):往数组中存放元素 语法格式: 数组名[下标] = 值;

如果下标超出数组最大下标的范围,会抛出一个数组越界异常
如果一个数组没有开辟空间,不能存放数据,否则报错

4):数组的静态创建(合并1) 2) 3)) 语法格式:数据类型[ ] 数组名 = new 数据类型【】{值1,值2,值3}

new 后面的【】不能写数组长度,jdk会根据数组元素的个数确定数组长度

简写:数据类型 数组名 = {值1,值2,值3}

int arr[];
arr = new int[5];
System.out.print(arr[0],arr[1],arr[2]);//0,0,0

arr[0] = 9;
System.out.print(arr[0]);//9

System.out.print(arr[5]);//超出范围 报错

int arr2[];
arr2[0] = 8;
System.out.print(arr2[0]);//arr2没有开辟空间,不能赋值,报错

//数组的静态创建(实际开发用得少)
int arr3[] = new arr3[]{ 
        1,2,3}
int arr4[] = { 
        1,2,3}

对数组的增删查改

删除:把删除元素后面的元素往前挪一个位置,将被删除的元素还原为初始值

//删除 先把要删除的元素之后的元素往前移一位
        int rmIndex = 2;
        for (int i = rmIndex+1; i < arr.length; i++) { 
        
            arr[i-1] = arr[i];
        }
        //最后一个元素复位为初始值
        arr[arr.length-1] = 0;

java内存模型

在这里插入图片描述

栈区: 方法执行时, 方法入栈, 存放临时变量,当方法执行完成之后, 出栈,该方法往栈区存放临时变量空间都会回收 堆区:new 出来的东西都存在堆区, java提供的GC(垃圾回收器)机制 方法区:字节码文件(.class文件)加载时进入的内存 本地方法栈:调用操作系统相关资源

二维数组

本质:由多个一维数组组成

三维数组:多个二维数组组成

声明一个二维数组

1): 数据类型[ ] [ ] 数组名;

2): 数组名 = new 数据类型[长度1] [长度2];

长度1指的是一维数组的个数,长度2指的是一维数组的长度
如果不指定长度2,表示每一个一维数组的长度是不一样的

3): 数组名[i] [j] = 值;

二维数组的静态初始化

int[ ] [ ] arr = { 
        { 
        1,2,3},{ 
        4,5,6},{ 
        7,8,9}};
注意:

二维数组的一维数组长度: 数组名.length

二维数组的指定下标的一维数组元素个数: 数组名[下标].length

二维数组的元素个数: 数组名[0].length+数组名[1].length+…+数组名[数组名.length-1].length

int[ ] [ ] arr = { 
        { 
        1,2,3,9},{ 
        4,5,6},{ 
        7,8,9}};
System.out.print(arr.length);//3
System.out.print(arr[0].length);//4
System.out.print(arr[0].length+arr[1].length+arr[2].length);//10

数组排序

数组的工具类: java.util.Arrays

标签: 0123连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司