JavaSE学习心得
围绕代码块添加控制结构(如 if, try, while 等):Ctrl+Alt+t
前言
这是一篇自学完JavaSE的心得分享,其中包括学习的体验与感受、一些学习建议、以及Java基础语法总结,面向对象往后的内容后续再发表。
学习途径:伟大的小破站
教程链接:黑马程序员Java零基础视频教程_上部(Java入门,含斯坦福大学练习题+力扣算法题和大厂java面试题)_哔哩哔哩_bilibili
学习体验
网上的开源学习视频各有各的优缺点,每个人体验下来的感觉都不一样,所以没有最好的,只有最适合自己的。我选择的是黑马阿伟,不仅仅因为它热度最高,讲的确实也不错,应该是大多数人选择开源视频的最佳选项,一共四百集,6800分钟。尚硅谷的老师也真心推荐,不同老师有不同的讲课风格,反正合着自己胃口来,不要盲目跟风。
为什么我选择黑马的Java入门到起飞?
首先是因为视频里边举的各种例子非常形象化,便于理解。其次是真的很精炼,别看接近7000分钟,真的是找不出一句废话,印证了那句多一句没有,少一句不行,老师开的玩笑也是和课程内容相关的。最后就不得不提一提那个PPT了,真的是百万PPT,总结得非常到位,还有阿伟上课特别喜欢开玩笑,这种幽默的授课方式,更加能够集中学习时注意力。
一点点小建议
有了优质的学习资源,自学仍然艰苦,主要还是容易三天打鱼两天晒网,恒心不够,原本我打算两个月学完,但是因为各种事情拖拉了很久,有时也会因为一些小bug找不出来而烦闷。既然选择了自学,一定要坚持下来,可以和周围的人组建学习圈子,不仅可以互相帮忙解答问题,还可以使学习动力更足。最后强调一定要跟着老师敲代码,扎实的编程基础往后才能跟上节奏,遇到问题也不要焦虑,往后重新回过来再看,会发现新大陆!!
Java基础语法重点知识
常用CMD命令
盘符名称+冒号
说明:盘符切换
举例:E:回车,表示切换到E盘
dir
说明:查看当前路径下的内容
cd目录
说明:进入单级目录
举例:cd itheima
cd ..
说明:回退到上一级目录
cd 目录1\目录2\…
说明:进入多级目录。举例:cd itheima\JavaSE
cd \
说明:回退到盘符目录。
cls
说明:清屏。
idea设置
自动导包
忽略大小写提示
取消勾选就OK了
几个快捷键
引入变量:Ctrl+Alt+v
说明:调用有返回值的方法可以不慌定义变量,直接按快捷键自动生成左边的变量
例如:
这个方法是有返回值的,但我调用时先写成这样,再按快捷键。
自动抽取方法:Ctrl+Alt+m
说明:选中后按快捷键,可以自动生成方法,且写好了对应的形参,但权限为private。
重命名:shift+f6
说明:选中一个变量并将所有使用到该变量的地方全部替换为新的名字。
围绕代码块添加控制结构(如 if, try, while 等):Ctrl+Alt+t
说明:选中代码块按快捷键,然后选择所需的控制结构
标识符命名规则 ---硬性要求
由数字、字母、下划线()和美元符($)组成
不能以数字开头
不能是关键字
区分大小写
\t 制表符
在打印的时候,把前面字符串的长度补齐到8或4,或者8或4的整数倍。最少补1个空格,最多补8个空格。
除了'\t',还可以用"\t",甚至这样也行"tom\t23"
键盘录入
import java.util.scanner;
Scanner sc =new Scanner(System.in);
int i= sc.nextInt();
获取随机数
import java.util.Random;
Random r=new Random();
Int numbe=r.nextInt(n); 随机生成大小为0到n-1数
进制相关
不同进制在代码中的表现形式
二进制:由0和1组成,代码中以0b开头
十进制:由0~9组成,前面不加任何前缀
八进制:由0~7组成,代码中以0开头
十六进制:由0~9还有a~f组成,代码中以0x开头
任意进制转十进制
十进制转其他进制
利用反码计算
正数的反码不变,负数的反码在原码的基础上,符号位不变,数值取反,0变1,1变0。
用反码去加算出来的码是正确结果的反码,再换成原码就是答案
计算机中的存储和计算都是以补码的形式进行的,正数三个码都一样,负数补码为反码加一,-128只有补码
逻辑运算符
&&相对于&来说就是一边不满足,另一边就不用看了,||同理
向右移动一次相当于除以二
向左移动一次相当于乘以二
两个应用:
Java内存分配
比如对象或数组就是new出来的
两个数组指向同一个空间的内存图
如果arr2是new出来的,就算数组元素一样堆内存中也会有两个数组地址。
数据类型
基本数据类型
整数和小数取值范围大小关系:double>float>long>int>short>byte
long类型变量:需要加入L标识(大小写都可以)
float类型变量:需要加入F标识(大小写都可以)
取值范围小服从大
byte short char 三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算
强制转换
也可以是System.out.println(10 / (double)3);
不能是System.out.println((double)(10 / 3));
第二个会输出3.0
存储与传递
基本数据类型:变量中存储的是真实的数据,整数类型、浮点数类型、布尔类型、字符类型
引用数据类型:变量中存储的是地址值,使用了其他空间中的数据,除了上面的其他所有数据类型
传递基本数据类型时,传递的是真实的数据,形参的改变,不影响实际参数的值
传递引用数据类型时,传递的是地址值,形参的改变,影响实际参数的值
数组
数组容器在存储数据的时候,需要结合隐式转换考虑
数组地址值
表示数组在内存中的位置
568db2f2为真正地址值
二维数组的内存图
此时输出arr[0][2]会报错,就算定义二维数组时写成int[][] arr=new int[2][3];也一样。
再给arr赋值arr1和arr2的地址之前,两个箭头指向右边两个地址。
一维数组只能动态或静态初始化,要么int[] arr1=new int[2];要么直接赋值int[] arr1={11,22};
switch语句格式
简便写法
Jdk12之后才能用:
区分以下方法是否构成重载
不看返回值只看形参,还必须是同一个类
两个小练习
熟悉字母在ASCII码表中的位置
打乱顺序
从一堆东西中乱序拿东西,不一定要生成随机索引去拿,因为这样还需要考虑有没有重复拿取,可以先打乱在按顺序拿。