• JavaSE基础(重要知识点)


    本文主要介绍了JavaSE基础知识中表较重要的概念、语法、和重要知识点,包含许多JavaSE中容易混淆、忽视、难以理解的点,具体相关知识参看此博客目录!

    1.易忽视知识点

    易忽视概念

    • 同一个作用域下变量名不能相同
    • java中定义局部变量必须进行初始化,定义全局变量可以进行初始化处理
    • 堆里面产生的成员变量才会有默认值(new出来的对象所带的成员变量),局部变量没有默认值
    • JavaScript 中boolean 可以转化为其他类型,java中boolean可以转化为其他类型
    • System.out.print(输出的内容); 输出内容后不换行, 可以没有输出的内容
    • java保留小数位输出,String.format(“%.nf”,d); //表示保留n位小数
    • 变量:一般经历三个步骤,声明、赋值、使用
    • switch的条件变量只能是八种数据类型加字符串(switch可以用于判断字符串是否相等)
    • 小数据与大数据一起参与运算,结果为大数据的类型(自动提升)
    • 强制类型转换语法:小数据类型 变量名 = (小数据类型) 值或大数据类型变量名
    • 三目运算符:条件表达式?值1:值2;(当条件表达式值为true,取值1,为false取值2)
    • 数组的作用:一次存储多个数据
    • 方法的作用:包装一段代码,使其方便使用,提高代码的复用性,降低代码的耦合度
    • 随机数获取: Random random=new Random(); int ran=random.nextInt(30)+20;
    • 一个java文件中只能有一个公共类(public class)
    • 如果系统中没有构造函数,系统中会自动构建一个无参的构造函数,如果一个类中有构造函数系统将不会创建任何构造函数

    1.java语言优点

    • 安全:原因:先编译再执行
    • 跨平台:原因:因为java程序最终实在jvm (java虚拟器) 上运行, 而所有系统都可以安装jre, jre中包含jvm

    2.java基本数据类型

    (1)基本数据类型有8种:其中四种整型,两种浮点型,一种字符型,一种布尔型
    (2)引用数据类型

    基本数据类型
    	整数
    		byte		1字节		8-2^7 ~ 2^7-1	-128~127
    		short		2字节		16-2^15~2^15-1
    		int			4字节		32-2^31~2^31-1	默认
    		long		8字节		64-2^63~2^63-1L或l
    	小数
    		float		4字节		32-2^31~2^31-1	加f或F
    		double		8字节		64-2^63~2^63-1	默认
    	布尔
    		boolean		1字节
    			值:
    				true:false:假
    			注意:boolean不参与转换
    			
    	字符
    		char		2字节		160~2^16-1:0~65535
    			注意:java中的字符使用单引号包裹,'a','中',' ',''
    引用数据类型
    	引用数据类型:
    			内存栈中存储的是地址,其地址引用了堆中的一块内存
    
    	字符串
    		String
    			注意:java中的字符串使用双引号包裹,"abc","helloworld","德玛西亚"
    所有类都是引用数据类型
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    3.转义字符

    常用的转移字符
    	\n:换行
    	\t:制表
    	\":双引号
    	\':单引号
    	\\:单斜杠
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4.引入方法的原因

    • 包装一段代码,降低方法内代码与方法外代码的关联度(降低耦合度)
    • 提高代码的复用率,减少代码的书写
    • 书写位置: 类中方法以外
    • 方法调用:
     	  方法名(实参列表);
     	  注意:
     		传入的实参必须与定义的形参
     		长度一致
     		顺序一致
     		数据类型一致
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 重载概念: 同一个类中,方法名相同,形参列表不同

    5.排序

    排序
    			1,冒泡排序
    				核心思想:相邻比较
    
    			2,选择排序
    				核心思想:确定交换的位置
    					放置的位置
    					最值的位置
    
    			3,JDK提供的排序
    				核心思想:快速排序
    				代码:
    					Arrays.sort(数组名);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    6.相关概念

    • 数组概念: 用来存放一组数据类型相同的数据
    • 二维数组的概念: 将一维数组作为数据存储的数组
    • 数组的创建:
    动态创建:
    		 数据类型[]  数组名 = new 数据类型[]{1,2,3,....};
    静态创建(必须在声明时赋值):
    		 数据类型[] 数组名 = {1,2,3,...};
    
    • 1
    • 2
    • 3
    • 4
    • 分支语句: 判断所给定的条件的真值,根据判断的结果对应执行不同的语句
    if(条件表达式1){
    				当条件表达式1true,执行此处代码
    			}
    
    switch(变量){
    		case 常量1:
    			当变量值等于常量1,执行此处代码
    		break;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 循环语句: 重复多次执行某一段特定代码
    while
    do while			省略
    
    for
    		语法:
    			for(表达式1;条件表达式2;表达式3){
    				循环体4
    			}
    		表达式的作用:
    			表达式1:初始化变量(给变量第一次赋值)
    			条件表达式2:循环条件
    			表达式3:改变表达式1中的变量的值
    		执行流程:
    			1,2,4,3,2,4,3,2,4,3,...2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 方法: 包装一段代码,使其方便使用,提高代码的复用性,降低代码的耦合度
    方法的定义
    	语法:
    		访问权限修饰符 修饰符 返回值类型 方法名(形参列表){
    			方法体
    			return xxx;
    		}
    方法的调用
    	语法:
    		方法名(实参列表);//实参列表要和所定义形参列表的长度一致、类型一致、顺序一致:
    		数据类型 变量名 = 方法名(实参列表);
    			注意:有返回值的方法才能用
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2.易混淆点

    1.++:自增底层原理

    		++在前::
    				int num = 10;
    				++num;
    			步骤:
    				1,获取num的值
    				2,给num的值加1
    				3,将加好的值赋值给num
    		++在后::
    				int num = 10;
    				num++;
    			步骤:
    				1,获取num的值并存储
    				2,给num的值+1
    				3,将加好的值赋值给num
    				4,使用存储的值参与运算
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2.逻辑运算符 (&与&& ,|与||)

    &:与
    	同真为真,有假为假
    &&:短路与
    	同真为真,有假为假
    	一旦发现前面有假,将不在判断后面的短路与逻辑
    	
    |:或
    	有真为真,同假为假
    ||:短路或
    	有真为真,同假为假
    	一旦发现前面有真,将不在判断后面的短路或逻辑
    
    注意:
    	1,只能给基本数据类型使用
    
    定义:	
    	使用 运算符 连接的 数值或变量 称为表达式
    	使用 逻辑运算符 的 表达式 被称为条件表达式
    逻辑运算符有:
    		< > <= >= == != & && | || !
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    3.字符串判断是否相等 (判断字符串是否相等—— ==与equals)

    • 牵扯到jvm内存管理机制(见下文)(==判断地址是否相同,equals判断内容是否相等)
    使用equals
    语法:
    	boolean 变量名 = 字符串1或字符串变量1.equals(字符串2或字符串变量2)
    	如果两个字符串内容相同变量名对应的值为true,否则对应的值为false
    例子:
    	String str01 = "Hello";
    	String str02 = "Hello";
    	boolean b = str01.equals(str02);
    	System.out.println(b);
    
    注意:
    	== 判断引用数据类型是判断 内存地址 是否相同
    	equals判断的是字符串内容是否相同
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    4.位运算

    • 在二进制的状态下,将其小数点左移或右移进行改变,结果以十进制数值输出
    public static void main(String[] args) {
    		//位运算:以 二进制 的数值表示形式移动,以十进制的数值形式表现出来
    		int num=3;
    		int num01,num02;
    		num01=num<<2;	//	00000011	--->00001100(左移两位)
    		num02=num>>2;	//	00000011    --->00000000(右移两位)
    		
    		System.out.println(num+"左移两位后的数值为:"+num01);
    		System.out.println(num+"右移两位后的数值为:"+num02);
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    位运算

    5.java中Scanner类相关点

    (1)next()与nextLine()的区别

    • next()
      1、一定要读取到有效字符后才可以结束输入。
      2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
      3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
      4、next() 不能得到带有空格的字符串。
    • nextLine()
      1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
      2、可以获得空白。

    (2)hasNextXXX()

    • 如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:

    示例: 以下实例我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果:

    public static void main(String[] args) {
           System.out.println("请输入数字:");
           Scanner scan = new Scanner(System.in);
    
          double sum = 0;
           int m = 0;
    
    		/*scan.hasNextDouble()先将读取到的内容放入缓存判断其类型,
    			若符合浮点daouble型,在将其赋值给x变量(不需要额外输入,其本身已在内存缓冲中)*/
           while (scan.hasNextDouble()) {
               double x = scan.nextDouble();
              m = m + 1;
                sum = sum + x;
            }
     
            System.out.println(m + "个数的和为" + sum);
            System.out.println(m + "个数的平均值是" + (sum / m));
            scan.close();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    6.流程控制语句

    • break、continue 均可以使用标记跳出指定循环

    • break
    		break在循环中单独使用,表示 结束当前 循环
    		break在循环中配合标记,可以 跳出指定 循环
    		注意:如何在循环中使用switch,switch中有break,表示跳出当前switch
    
    • 1
    • 2
    • 3
    • continue
    		continue在循环中单独使用,表示 跳过本次 循环
    		continue在循环中配合标记,可以 跳过指定 循环
    		注意:只能在循环中使用
    
    • 1
    • 2
    • 3

    • 示例:
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		//标记循环处Tag
    		Tag:for (int i = 0; i <= 3; i++) {
    			for (int j = 0; j <= 10; j++) {
    				if (i==2&&j==3) {
    					//跳出指定for循环
    					break Tag;
    				}
    				
    				System.out.print(j+" ");
    			}
    			System.out.println();
    		}
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    Tag标记循环跳出

  • 相关阅读:
    Linux中输出输入重定向
    动态规划 贪心算法
    火山引擎ByteHouse联合Apache Airflow,让数据管理更加高效
    EasyCVR国标GB28181协议接入下的TCP和UDP模式说明及差异
    测试工程师常见的面试问题及回答建议
    中国象棋开源人工智能程序(带UI)搬运
    设备安全——防火墙策略实验【NAT、备份】
    数据库系统原理与应用教程(081)—— MySQL 视图(View)的创建与使用
    R语言survminer包的ggsurvplot函数可视化生存曲线、legend.title指定图例的标题、legend.labs指定图例标签文本
    Nginx部署vue项目并在局域网中开放访问(尝鲜)
  • 原文地址:https://blog.csdn.net/weixin_43715360/article/details/125285013