JAVA学习之基础学习(一)

JAVA学习之基础学习(一)

数据类型转换

自动转换

  • 自动转换:将取值范围小的类型自动提升为取值范围大的类型

    int i = 1; 
    byte b = 2;
    

    i 和 b 相加结果为int类型

转换规则

范围小的类型向范围大的类型提升, byte、short、char 运算时直接提升为 int 。

byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double

强制转换

  • **强制类型转换:**将取值范围大的类型强制转换成取值范围小的类型

转换格式:

数据类型 变量名 = (数据类型)被转数据值;
  • 注:浮点转成整数,直接取消小数点,可能造成数据松狮精度

    int强制转成short砍掉2个字节,可能造成数据丢失

运算符

算数运算符

  • 变量 前++ :变量a自己加1,将加1后的结果赋值给b,也就是说a先计算。a和b的结果都是2。

  • 变量 后++ :变量a先把自己的值1,赋值给变量b,此时变量b的值就是1,变量a自己再加1。a的结果是2,b

    的结果是1。

方法入门

方法的定义

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

注意事项

  • 方法定义注意事项
    • 方法必须定义在一类中main方法外
    • 方法不能定义在另一个方法里边

JSell脚本

JShell脚本工具是JDK9的新特性

相当于Python的交互式解释器

扩展知识点

+=符号的扩展

分析: s += 1 逻辑上看作是 s = s + 1 计算结果被提升为int类型,再向short类型赋值时发生错误,因为不能将取值范围

大的类型赋值到取值范围小的类型。但是, s=s+1进行两次运算 , += 是一个运算符,只运算一次,并带有强制转换的特点,

也就是说 s += 1 就是 s = (short)(s + 1) ,因此程序没有问题编译通过,运行结果是2.

常量和变量的运算

public static void main(String[] args){ 

	byte b1=1; 

    byte b2=2; 

    byte b3=1 + 2; 

    byte b4=b1 + b2; 

    System.out.println(b3); 

    System.out.println(b4); 

} 

分析: b3 = 1 + 2 , 1 和 2 是常量,为固定不变的数据,在编译的时候(编译器javac),已经确定了 1+2 的结果并没

有超过byte类型的取值范围,可以赋值给变量 b3 ,因此 b3=1 + 2 是正确的。

反之, b4 = b2 + b3 , b2 和 b3 是变量,变量的值是可能变化的,在编译的时候,编译器javac不确定b2+b3的结果是什

么,因此会将结果以int类型进行处理,所以int类型不能赋值给byte类型,因此编译失败。

选择语句

  • switch语句格式

    switch(表达式) { 
    
        case 常量值1: 
    
        语句体1; 
    
        break; 
    
        case 常量值2: 
    
        语句体2; 
    
        break; 
    
        ... 
    
        default: 
    
        语句体n+1; 
    
        break; 
    
    } 
    

case的穿透性

在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运

行,直到遇到break,或者整体switch结束。

IDEA常用快捷键

快捷键功能
Alt+Enter导入包,自动修正代码
Ctrl+Y删除光标所在行
Ctrl+D复制光标所在行的内容,插入光标位置下面
Ctrl+Alt+L格式化代码
Ctrl+/单行注释
Ctrl+Shift+/选中代码注释,多行注释,再按取消注释
Alt+Ins自动生成代码,toString,get,set等方法
Alt+Shift+上下箭头移动当前代码行

数组

  • 格式

    数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度];
    

数组越界异常

抛出 ArrayIndexOutOfBoundsException 数组越界异常。

数组空指针异常

抛出 NullPointerException 空指针异常。

数组作为方法参数和返回值

  • 数组作为方法参数传递,传递的参数是数组内存的地主地址
  • 数组作为方法的返回值,返回的是数组内存地址

注:方法的参数为基本类型时,传递的是数据值. 方法的参数为引用类型时,传递的是地址值.

类与对象、封装、构造方法

对象的使用

创建对象:

类名 对象名 = new 类名();

成员变量和局部变量的区别

  • 在类中的位置不同
    • 成员变量:类中,方法外
    • 局部变量:方法中或者方法声明上(形式参数)
  • 作用范围不一样
    • 成员变量:类中
    • 局部变量:方法中
  • 初始化值的不同
    • 成员变量:有默认值
    • 局部变量:没有默认值。必须先定义,赋值,最后使用
  • 在内存中的位置不同
    • 成员变量:堆内存
    • 局部变量:栈内存
  • 生命周期不同
    • 成员变量:随着对象的创建而存在,随着对象的消失而消失
    • 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

封装

封装的步骤
  1. 使用 private 关键字来修饰成员变量
  2. 对需要访问的成员变量,提供对应的一对 getXxx 方法 、 setXxx 方法

private的使用格式
private 数据类型 变量名 ;

封装优化1–this关键字

this的含义

this代表所在类的当前对象的引用(地址值),即对象自己的引用

注:方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁

this使用格式

this.成员变量名;
封装优化2–构造方法

构造方法的定义格式

修饰符 构造方法名(参数列表) {
	//方法体
}

构造方法的写法上,方法名与它所在的类名相同。它没有返回值,所以不需要返回值类型,甚至不需要void。使用 构造方法后,代码如下:

public class Student {
	private String name;
	private int age;
	//无参构造方法
	public Student() {}
		// 有参构造方法
	public Student(String name, int age) {
    	this.name = name;
    	this.age = age;
	}
}

注:

  1. 如果你不提供构造方法,系统会给出无参数构造方法。
  2. 如果你提供了构造方法,系统将不再提供无参数构造方法。
  3. 构造方法是可以重载的,既可以定义参数,也可以不定义参数。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一切如来心秘密

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

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

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

打赏作者

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

抵扣说明:

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

余额充值