JavaSE小知识(一)
0.
JavaSE的英文是Java Standard Edition其中定义了Java中核心基础的语法。
1.
Java的编译器框架
2.
Java中的数据类型
3.
byte的范围为-128~127
引用类型==是比较地址,equal是比较内容
Java的变量类型是强类型的。
4.
5.
数据类型转换的注意事项:
第四点即在java中Boolean不可以被当作0,1.只能是true和false
6.
在java中的运算当中有不同类型的数据,那么结果将会是数据类型范围大的那种。
7.
Java中三元运算符必须赋给一个变量或者输出,即一定要使用。
8.
例如
这不属于自动类型转换,属于强制类型转换。
9.
10.
11.
三种循环的区别:
1.如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,而do-while循环任何情况会至少执行一次。
2.for循环的变量在小括号中定义,只有循环内部可以使用,while循环和do-while循环初始化语句本来就在外面,所以出来循环后还可以继续使用。
12.
13.
IDEA开发的项目结构:
14.
15.
16.
17.
18.
nextInt方法根据分隔符(回车,空格等)只取出输入的流中分割的第一部分并解析成Int,然后把后面的字节传递下去。
键盘输入相当于 int+回车,nextInt读出了"0",并留下了"回车",后面的netxLine读到了一个"回车"
两种解决方式:
1.调整输入顺序
2.在nextint后面加一个nextline来取消多余字符串
19.
数组可以作为方法的参数,
当调用改方法的时候,向方法的小括号里进行传参,传递的其实是数组的首地址值
20.
封装在Java中的体现
21.
继承解决的问题:共性抽取
22.
StringBuilder基本原理
23.
数组的特点:查询快,增删慢。
数组的一旦创建长度是不可变的,因此数组增删的本质是在内存区创建新数组,把对象的地址重新指向新数组,把旧的数组原本内容的部分复制过来,然后销毁旧数组,因此效率低下。
24.
字符串转换为字符数组
char[] c=s.toCharArray();
或者在for循环内部使用char x=s.charAt(i);可以遍历字符串的每一个字符。
25.
字符串数字转数字
1:字符串数字转数字
假设给定一个字符串,String str=“1234”;
要转为转数字
可以这样:int a=Integer.valueOf(str);
输出即可System.out.println(a);
或者:Integer.parseInt(str);
2.数字转字符串数字
假设给定一数字,int a=1234;
可以这样:String str=a+"";或者
String str=String.valueOf(a);
26.
res.stream().mapToInt(Integer::valueOf).toArray(),将list转为数组
部分题目要求返回的是数组,而非ArrayList这种动态数组。
27.
方法区和堆内存是线程共享的。 程序计数器、虚拟机栈是线程隔离的。
28.
被static修饰的变量称为静态变量,静态变量属于整个类,而局部变量属于方法,只在该方法内有效,所以static不能修饰局部变量
29.
StringBuffer线程安全,StringBuilder线程不安全,底层实现上的话,StringBuffer其实就是比StringBuilder多了Synchronized修饰符。
30.
Volatile到底做了什么:
禁止了指令重排 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量值,这个新值对其他线程是立即可见的 不保证原子性(线程不安全) synchronized关键字和volatile关键字比较: volatile关键字是线程同步的轻量级实现,所以volatile性能肯定比synchronized关键字要好。但是volatile关键字只能用于变量而synchronized关键字可以修饰方法以及代码块。synchronized关键字在JavaSE1.6之后进行了主要包括为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁以及其它各种优化之后执行效率有了显著提升,实际开发中使用 synchronized 关键字的场景还是更多一些。 多线程访问volatile关键字不会发生阻塞,而synchronized关键字可能会发生阻塞 volatile关键字能保证数据的可见性,但不能保证数据的原子性。synchronized关键字两者都能保证。 volatile关键字主要用于解决变量在多个线程之间的可见性,而 synchronized关键字解决的是多个线程之间访问资源的同步性。
31.
Java程序初始化顺序: 父类的静态代码块 子类的静态代码块 父类的普通代码块 父类的构造方法 子类的普通代码块 子类的构造方法
32.
一旦在finally块中使用了return或throw语句,将会导致try块,catch块中的return,throw语句失效
33.
静态代码块是随类的加载运行的代码部分。
Java项目开发中常把各种配置文件利用静态代码块加载获取,节省了资源。
34.
Java的Math.round函数规则:
Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加0.5然后进行下取整。
即在Java中四舍五入的原理是先对数字进行+0.5操作然后向下取整。
35.
Scanner是一个扫描器,我们录取到键盘的数据,先存到缓存区等待读取,它判断读取结束的标示是 空白符;比如空格,回车,tab 等等。
next()方法读取到空白符就结束;
nextLine()读取到回车结束也就是 “ \r ”;
本文地址:https://blog.csdn.net/weixin_43723891/article/details/109822211