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","德玛西亚"
所有类都是引用数据类型

3.转义字符
常用的转移字符
	\n:换行
	\t:制表
	\":双引号
	\':单引号
	\\:单斜杠

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

5.排序
排序
			1,冒泡排序
				核心思想:相邻比较

			2,选择排序
				核心思想:确定交换的位置
					放置的位置
					最值的位置

			3,JDK提供的排序
				核心思想:快速排序
				代码:
					Arrays.sort(数组名);

6.相关概念
  • 数组概念: 用来存放一组数据类型相同的数据
  • 二维数组的概念: 将一维数组作为数据存储的数组
  • 数组的创建:
动态创建:
		 数据类型[]  数组名 = new 数据类型[]{1,2,3,....};
静态创建(必须在声明时赋值):
		 数据类型[] 数组名 = {1,2,3,...};
  • 分支语句: 判断所给定的条件的真值,根据判断的结果对应执行不同的语句
if(条件表达式1){
				当条件表达式1true,执行此处代码
			}

switch(变量){
		case 常量1:
			当变量值等于常量1,执行此处代码
		break;
}
  • 循环语句: 重复多次执行某一段特定代码
while
do while			省略

for
		语法:
			for(表达式1;条件表达式2;表达式3){
				循环体4
			}
		表达式的作用:
			表达式1:初始化变量(给变量第一次赋值)
			条件表达式2:循环条件
			表达式3:改变表达式1中的变量的值
		执行流程:
			1,2,4,3,2,4,3,2,4,3,...2
  • 方法: 包装一段代码,使其方便使用,提高代码的复用性,降低代码的耦合度
方法的定义
	语法:
		访问权限修饰符 修饰符 返回值类型 方法名(形参列表){
			方法体
			return xxx;
		}
方法的调用
	语法:
		方法名(实参列表);//实参列表要和所定义形参列表的长度一致、类型一致、顺序一致:
		数据类型 变量名 = 方法名(实参列表);
			注意:有返回值的方法才能用

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,使用存储的值参与运算
2.逻辑运算符 (&与&& ,|与||)
&:与
	同真为真,有假为假
&&:短路与
	同真为真,有假为假
	一旦发现前面有假,将不在判断后面的短路与逻辑
	
|:或
	有真为真,同假为假
||:短路或
	有真为真,同假为假
	一旦发现前面有真,将不在判断后面的短路或逻辑

注意:
	1,只能给基本数据类型使用

定义:	
	使用 运算符 连接的 数值或变量 称为表达式
	使用 逻辑运算符 的 表达式 被称为条件表达式
逻辑运算符有:
		< > <= >= == != & && | || !
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判断的是字符串内容是否相同
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);
	}

位运算

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();
    }
6.流程控制语句
  • break、continue 均可以使用标记跳出指定循环

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

  • 示例:
	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();
		}
	}

Tag标记循环跳出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值