Java:细节知识点

持续更新中…

重点课:
P198、P199、P211、P243、P245、P251

①Java概述:

  • Java运行机制
  • JDK
  • Java开发规范

1.编译:通过javac源文件(扩展名是.java)编译成字节码文件(扩展名是.lass文件)
2.运行:通过java运行.class文件,即将.class文件装载到JVM中执行
3.Java程序执行入口是mian()方法:

public static void  main(String[]) args{...}

4.严格区分大小写
5.一个文件中可以包含多个类,但只能包含一个public类
6.源文件中的public的类名和文件名一致


②变量:

  • 数据类型

1.变量的三部分:类型、名称、数值
2.加法的两种用法:

  • 加号左右两边都是整数:则做数值运算相加
  • 加号两边任意一个是字符串类型,就做拼接,如果是字符,由于java中字符表示的是数值,因此字符相加就是将字符对应的值相加后得到一个新的值
System.out.print("100"+9);   1009
System.out.print(100+9);   109
System.out.print("你好"+9+10);   你好910

3.浮点类型中的细节:

  • 小数:0.123=.123(前面那个0可以省略)
  • 科学计数法:
    • 1.2e+5=1.2*10^5
    • 8.1E-9=8.1*10^(-9)

4.在不知道数的大小情况下,整数类型推荐使用int,浮点数类型推荐使用double
5.浮点数默认是double类型,如果要表示成float就需要在数值末尾加上f / F
6.java中char本质是一个整数,因此在默认输出会得到unicode码所对于的字符,如果想得到整数,就需要使用(int)字符
7.字符类型的值输出时具体值所对于的字母,如a = 97 ,那么输出的就是a
8.java中每个变量都需要声明类型,即使是通过赋值得到的变量,也需要声明类型
9.String与其他类型的转换
① :String->double

String a = "18.8";
double b = Double.parseDouble(a)

②:char->String

char a = '你好';
String b = a+" ";

③运算符:

  • 二进制
  • 位运算符

1.整数做除法,结果只有整数;小数做除法才得到小数
2. &&、&
① 短路与&&:两个都为真结果为真,否则为假;当第一个条件不成立时,就不执行第二个条件
②逻辑与&:两个都为真结果为真,否则为假;当第一个条件不成立时,仍然要执行第二个条件
编程中常用短路与&&效率更高
3. || 、|
①短路或|| :两个条件中任意一个条件为真,结果为真;当第一个条件为真时,就不需要判断第一个条件,效率更高
②逻辑或| : 两个条件中任意一个条件为真,结果为真;当第一个条件为真时,仍然需要判断第一个条件
编程中常用短路或||效率更高
4.复合赋值运算符:会在计算机中做一种类型转换,如:

byte b = 2;
b += 1; //此处相当于:b = (byte) (b+1)
//输出:b = 3

④控制结构:

  • 循环

1.多分支结构:if-else if…-(else)
①有else:如果所有条件都不满足,就默认去执行else里面的语句
①无else:如果所有条件都不满足,就无执行入口,不执行
最多有一个执行入口,任意一个条件满足就不在往下判断了
2.switch细节:
① switch后的表达式的类型应该和case后的常量的数据类型保持一致,或者刻意通过类型转换链条进行转换
② 表达式返回值只能是以下数据类型:byte、short、int、char、enum、String
③ 如果case后的语句执行后没有break 语句,那么就穿透,不需要判断下一个case,直接执行下一个语句韩顺平的java课
3.while 和 do-while去要账
while(文明要账):先去看看有没有能力还钱,要是有能力,就执行还钱语句
do-while(暴力要账):先不管别人有没有能力还钱,上去就叫人还钱,到最后判断有没有能力还钱

4.判断两个字符串是否相等:
String name = “珍珠”;
if(“丁真”.equals(“name”))


⑤数组、排序、查找:

  • 数组

1.表示方法:
一组浮点数组:double [ ] num= {1.2 , 2.6 , 1.9};
索引:num[0]、在使用循环遍历时,一般使用(int i =0 ; i<3 ; i++)
数组长度:num.length
注意:数组从第0个位置开始编号
2.创建数组:
① 第一种动态初始化:
数据类型 数组名 [ ] =new 数据类型[大小]

double a [ ] =new double[5]

② 第二种动态初始化:

double a [ ] ; // 期房、先声明数组
a =new double[5] ; /交房、分配空间,可以往里面存数

① 静态初始化:
数据类型 数组名 [ ] ={具体数据}
3.数组拷贝
将已知的数组拷贝到另一个数组中,需要重新在JVM中的堆里面重新声明一个空间用来存放新的数组里的值
注意Java中基本数据类型放在栈中,数组放到堆中,栈中放数组的地址
在这里插入图片描述

4.数组赋值和数组拷贝的区别:
数组赋值:栈对栈赋值JVM中栈中的地址,然后用得到的地址去堆里面查找具体的数值。若更改任意一个数组的值,就会影响另一个数组,因为两个数组使用同一个堆里的数值空间
数组拷贝:堆对堆先在堆里重新声明一个空间,然后将堆里的数值拷贝到新声明的空间中。更改一个数组,不会影响另一个数组的值,因为两个数组用的两个独立的数组空间
**注意**只要使用new,就为数组在
5.二维数组
在这里插入图片描述

①形式:int [ ] [ ]
②方便理解:原一维数组里的元素也是一个一维数组
③二维数组元素个数:a.length
④索引二维数组的某个值:a [ i ] [ j ]
⑤动态初始化:int [ ] [ ] a = new int [ 一维数组个数 ] [一维数组中的元素个数 ]


⑥面向对象编程(基础):

  • 成员方法
  • 成员方法传参机制
  • 构造器

1.对象包括:属性、行为
2.类:程序员定义的一种数据类型
如 int 是java内部定义好的一种整型数据类型
3.类与对象的关系的通俗易懂理解:
类:找男朋友前会在心中想一些标准,那么就把这些特征提取出来形成一个类,包括:属性(性格、外貌、为人)、行为(笑、说、看、)
对象:某一天你看到某个人符合你的类,那么这个人就是你的对象(粗浅理解,希望是两情相悦哈哈哈~)
4.类 --> 对象 的集中说法:
① 创建一个对象
② 实例化一个对象
③ 把类实例化
5.对象的内存布局
基本数据类型直接存放,字符串和对象都是引用数据类型,需要通过内存地址存放与访问
在这里插入图片描述
将类信息加载到方法区(属性、行为)- 在堆里根据不同的属性分配空间(字符串型、整型)- 如果堆里的空间是字符串类型,那就分配一个地址再指向常量池,如果是基本数据类型,就直接放在堆里 - 然后将堆里的地址返回给栈里的 cat
注意真正得到对象是new Cat() ,也就是堆里面以及方法区包含的内容才是真的对象,而cat只是指向这个对象的,它只是对象的名字
6.对象的属性的默认值遵守数组的默认值的规则
7.对象分配机制
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
8.方法的调用机制
在这里插入图片描述
在这里插入图片描述

9.类中的方法调用:
① 同一个类中的方法调用:直接调用方法,如 metho01();
② 在不同类中调用方法:需要先创建一个对象,然后通过对象调用类,
如 Arr myArr = new Arr();
myArr.method();
10.方法中的传参机制
① 基本数据类型:
传递的是值,形参的改变不会影响到实参(形参是传入调用的方法里的参数,实参是main主方法里的参数),并且由于有一个方法就会在栈中开一个独立空间,因此调用的方法和main主方法之间是独立空间,调用方法改变的参数不会影响到主方法中的参数
② 引用数据类型:
传递的是地址,因为引用数据类型是需要使用地址指向堆空间的,因此,引用数据类型传递的是地址而不是具体的值,那么在改变调用方法中的参数时,就直接使得地址指向的堆空间中的值改变了,进而也就改变了main主方法中的参数值
11.递归执行机制:
当一个方法执行完毕或者遇到 return 就会返回,遵循谁调用就将结果返回给谁
从最上层的栈返回值,依次往下返回,上层返回的值给到下层调用的地方,即在哪调用的就返回到这里
在这里插入图片描述
12.变量的作用域:
① 全局变量:在类里面定义的参数,有默认值,不用赋值输出也不会报错
② 局部变量:在类里面的方法中定义的参数,没有默认值,需要赋值才能输出
13.方法和构造器的区别:

① 方法:
创建对象-调用类里的方法以及按需求赋值
可以调用方法

② 构造器:
在创建对象的同时就给对象赋值 
.没有返回值
创建对象+给对象赋值=构造器(注意:构造器是初始化对象)
名字和类名一致
.没有方法中的返回值和void
不能调用构造器

14.有构造器后的对象创建流程
在这里插入图片描述
15.this关键字:那个对象呗调用,this就代表哪个对象
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值