这里主要整理自己在学习Java过程中需要记忆的东西,本人学过一些C++、Golang、Python等,所以针对自己的记忆点进行整理,不全面,只针对自己,若读者在读此博客过程中发现感兴趣内容,不甚荣幸
不同进制的数字表示
在Java中,不同进制的数字用不同的前缀表示,具体如下:
//二进制101 以0b开头,即十进制5
int a = 0b101
//八进制101 以0开头,即十进制64+1=65
int b = 0101
//十六进制11 以0x开头,即十进制16+1=17
int c = 0x11
字符串常量相等,new出来的字符串不相等
//sa sb不相等
String sa=new String("helloworld")
String sb=new String("helloworld")
//sc sd相等
String sc="hello world"
String sd="hello world"
所以,判断某字符串变量是否等于某字符串时,应该使用
str.equas("字符串")
而不是直接判断等于
数字+字符串
这个有点颠覆我的看法,竟然会转字符串
//输出 11
System.out.println(""+1+1);
//输出 2
System.out.println(1+1+"");
//输出 1.01.0
System.out.println(""+1.0+1.0);
//输出 2.0
System.out.println(1.0+1.0+"");
类型转换
运算时类型转换向高的对齐再运算
byte->short->char->int->long->float->long
赋值时低的向高的自动转换,高的向低的强制转换
boolean不能进行转换
Java中的boolean占几个字节?
先说结论:简单来说,单个boolean占4个字节,boolean数组占1个字节
理由来源是《Java虚拟机规范》一书中的描述:
虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位。
但是但是!具体还要看虚拟机是否按照规范来!
那么怎么看呢?呃,也不知道怎么输出地址,先留坑吧!
参考:https://www.cnblogs.com/baiqiantao/p/11440327.html
关于类的静态变量
类的静态变量可以直接被本类调用
非静态变量不能被本类直接调用,得初始化一个对象并调用该对象的非静态参数
public class Test {
static int tp=1;
int tp1=1;
public static void main(String[] args) {
System.out.println(tp);//可以
System.out.println(tp1);//报错
}
}
Java的常量
常量不是const,而是final,一般用大写
static final double PI = 3.14 其中static final位置可以互换
前面可以加public等等
给自己个规定,顺序如下:
(public) (static) (final) double PI = 3.14
变量命名
见名知意
类成员变量:首字母小写+驼峰
局部变量:首字母小写+驼峰
常量:大写字母下划线MAX_VALUE
类名:首字母大写+驼峰
方法名:首字母小写+驼峰
运算符
instanceof也是运算符,用于判断左边的对象是否为右边类(或右边类子类)的实例
// 定义一个父类
class Parent {}
// 定义一个子类继承自父类
class Child extends Parent {}
public class InstanceOfExample {
public static void main(String[] args) {
Parent parent = new Parent();
Child child = new Child();
// 使用 instanceof 进行类型检查
System.out.println("parent instanceof Parent: " + (parent instanceof Parent)); // 输出 true
System.out.println("child instanceof Parent: " + (child instanceof Parent)); // 输出 true
System.out.println("parent instanceof Child: " + (parent instanceof Child)); // 输出 false
System.out.println("child instanceof Child: " + (child instanceof Child)); // 输出 true
}
}
Scanner类输入输出
后续刷题再仔细整理,nextInt()感觉可以常用
数组定义
很奇怪
C++是
int a[3]={1,2,3};
Java是
int[] a={1,2,3};
若不定长,则是
int[] a=new int[5];
具体的后面数组那节再说
增强for循环
for(int x:numbers){
sout(x)
}
方法重载
函数名一样,根据传入参数的不同来标识(个数、类型、排列顺序),返回类型无所谓