java基础知识总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础知识总结相关的知识,希望对你有一定的参考价值。

/*
java基础语言总结

*/

1.基本数据类型有哪些
byte short boolean char int float long double
//测试基本数据类型所占用的字节数,可以通过其包装类进行实现
System.out.println("byte的大小"+Byte.SIZE/8);
System.out.println("short的大小"+Short.SIZE/8);
System.out.println("char的大小"+Character.SIZE/8);
System.out.println("int的大小"+Integer.SIZE/8);
System.out.println("float的大小"+Float.SIZE/8);
System.out.println("double的大小"+Double.SIZE/8);
System.out.println("long的大小"+Byte.SIZE/8);

输出如下:
byte的大小1
short的大小2
char的大小2
int的大小4
float的大小4
double的大小8
long的大小1

java中支持类型向上转型,低精度的可以直接转化为高精度的,但是高精度的转化为低精度的必须强转
如:float int double 之间的相互转化

float f=3.14f;
int f1=(int)f;
System.out.println(f1);
double d=f;
System.out.println(d);

double d1=3.16478263482364832;
float f2=(float)d1;
System.out.println(f2);

int a=3;
double d2=a;
System.out.println(d2);

//了解逻辑运算中的短路与和与

&& 此为短路与,&为与

&&:当条件的左端已经判断为false的时候,有端不需要进行判断就可以跳出

&必须判断两端的情况,不管是否左边为false

public static void main(String [] args){
int a=2;
int b=5;
long flag=10000000;
long time=System.currentTimeMillis();
while(flag!=0){
if(a==3&b==5){
System.out.println("输出的为正确");
}
flag--;
}
long temptime=System.currentTimeMillis();

System.out.println(temptime-time); // 15

while(flag!=10000000){
if(a==3&&b==5){
System.out.println("输出的为正确");
}
flag++;
}
long endTime=System.currentTimeMillis();
System.out.println(endTime-temptime); // 0
}


1.1String 类 StringBulider StringBuffer
String类:
String s="abc";
String s1="abc";
System.out.println(s1==s); //true

当String对象为字符串常量的时候,java虚拟机将会将此字符串放到字符串常量池中作为缓存,
当定义另外一个字符串常量时,jvm将会在常量池中先查找是否存在这个常量,如果存在将会把地址给
栈中的引用变量,没有将会在常量池中产生一个新的对象,并把地址交给栈中的引用变量。

String s1="abc";
String s2="abcd";
String s3=s1+s2;
String s4="abc"+"abcd";

System.out.println(s3==s4)//false

//返回对象的hashCode
System.identityHashCode(s3);

s3是先取得s1和s2在常量池中的值,再进行拼接。
而s4是在编译时就将字符串进行了拼接,之后在常量池中就创建了这个新的对象

可以通过java反编译看看字节码文件 ,就可以在常量池中存在此常量 javap -v BasicDataType.class 
技术分享

从上面反编译中,我们可以看出在常量池中已经重新建立了一个abcabcd的对象,下面将通过jvm的操作指令来解释如何将这个对象交给s4的

技术分享

idc #39 将#39这个地址中的内容从常量池中压入栈中,而这个地址指向的是#40这个地址,所以将常量abcabcd压入栈中

而astore的意思是将栈顶的数弹出保存到本地变量5中,刚好就是S4 因为main函数中有一个参数args

 

String类常用方法

     常用的构造方法:         

     String() --------- 初始化一个String对象,表示一个空字符序列

     String(String value) --------- 利用一个直接量创建一个新串

     String(char[] value) --------- 利用一个字符数组创建

     String(char[] value,int offset,int count) --------- 截取字符数组,从offset开始count个字符创建

     String(StringBuffer buffer) --------- 利用StringBuffer创建

   

   

 

以上是关于java基础知识总结的主要内容,如果未能解决你的问题,请参考以下文章

java基础知识总结

java基础知识总结1

Java基础知识总结

Java知识总结——基础知识

Java知识体系最强总结(2021版)

Java菜鸟学习总结Java基础知识(类)