Day_02

Day_02

这是最近几天的学习总结

1. 字符参与运算实际是拿存储在计算机的ASCII码来计算的

  • 0:48
  • A:65
  • a:97
  • 字符串参与运算实则是做字符串的拼接

2. 扩张赋值运算符(/=、*=、-=、+=)隐含了强制类型转换

short s=1;
s +=1;//注意 1 是整数 原本是有损失精度的报错的。
分析: a+=10; 相当于 a=(a的数据类型)a+10;

  • Shift+Tab 前移快捷方式

3. 运算符

  • &&有理想效果,左边为false右边不执行 ||与之相同
  • &(|)会将左右两边判定完
  • 三元运算符:关系表达式:表达式1?表达式2;关系表达式为true返回表达式1,false返回表达式2.

4. 一个类中的顺序:package – > import – > class

5. Switch支持:byte、short、int、char、JDK5以后支持枚举、JDK7以后支持字符串

int i=Random.NextInt(10);//范围[0,10)

6. Java内存分配

  • 栈(存放局部变量):使用完毕立即回收。局部变量随方法的调用而存在,随方法的调用完毕而消失且没有初始值。
  • 堆(new 出来的对象):使用完毕后会在垃圾处理器空闲的时候回收。类方法是类对象公用的存储在方法区,需要使用的时候直接压入栈中,调用完毕后直接被回收。类的属性(成员变量)类型相同但是每个对象的具体值是不同的因此是存储在堆中(是复制了一份方法区里的成员变量并未赋值)。
  • 方法区(class文件 etc.):class字节码文件(包含成员变量、成员方法(main,…)),运行的时候方法压入栈中(先进后出),main是静态先压入,之后压入其他方法,在其他方法执行完毕之后释放,最后在释放main方法。
  • 本地方法区(和系统有关):
  • 寄存器(CPU使用):

7. 二维数组:其实是多个一个数组组成,每个一维数组前后地址应该不是前后连续的,而是栈中各个相互独立的空间组成。

  • 注意 我二维数组new出来的对象(指针,是个地址)存放在堆中,而后数组赋值是在栈中的。

如:public static void main(String []args) {
int []a=new int [3]; //这是一个局部变量,类属性才是非局部
}

8. 方法的重载:参数的个数不同,参数的类型不同。与返回值无关。

  • 实际参数:实际参与运算的变量。
  • 形式参数:用于接收实际参数的变量。 如果形式参数是正常的数据类型就不会影响实际参数的值,如:int long char…,不是正常的数据类型:类对象、数组…。

9. 断点:其实就是一个标记。在代码的左边对应的行点击就添加了。哪里不会不懂加哪里,必须加在有效的 语句上。如果想要看被调用方法的执行流程,被调用方法必须要加断点。
在这里插入图片描述

  • 断点只是在调用的时候使用。:代码区右键----Debug----step over(下一步)一直点直至程序结束。
  • 注意地点:

A:代码区域看程序执行流程
B:在Debug区域看程序执行流程
C:Variables看变量的变化
D:Console看程序的输入输出

  • 去除断点:

A:将加断点的动作重新执行一次
B:在Debug中找到Breakpoints,选择需要删去的断点即可。

10. private关键字:解决了通过对象直接访问成员变量存在的数据安全问题。

  • 是一个权限修饰符。被修饰的变量和方法只能在本类中使用和访问。

11. 封装:把属性隐藏提供公共方法对其访问(安全性、将代码进行类封装提高了代码的复用性)。private是封装、类方法是封装、类也是封装,封装无处不在。

12. this指针:代表所在类创建的对象的引用。

  • 解决了:如果局部变量和成员变量同名会采用就近原则使用局部变量。

Student(int age){
age=age; //这里的成员变量并未赋值成功,而是 (局部变量)age=(局部变量)age; 应当使用 this.age=age;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值