LOADING

加载过慢请开启缓存 浏览器默认开启

Java语言知识总结

1.基本结构


1.1文件名与类名

public class HelloWorld{
    public static void main(String[] args){
        System.out.println("hello,world!你好,世界!");
    }
}

public class 类名这个public只能有一个
文件名.java这个文件名要和public class 类名类名一样;就如上面代码中类名HelloWorld,则该.java文件的文件名也必须是HelloWorld


1.2main程序执行的入口

public class HelloWorld{
    public static void main(String[] args){
        System.out.println("hello,world!你好,世界!");
    }
}
class HelloChina{
    public static void main(String a[]){
        System.out.println("hello,world!你好,中国!");
    }
}

public static void main(String[] args)是一个可执行的Java程序必须有的,因为它是执行语句的入口
public static void main(String[] args)其中的String[] args可以写成String arg[]arg也可以改成任意可表示数组的符号如a等;有public是因为它权限最大,有static是因为它与类相关,有void是因为它在栈帧最底部不需要返回值
一个Java程序里可以有多个main


2.输出与输入


2.1输出

public class PrintTest{
    public static void main(String[] args){
    System.out.print(); //只输出,不换行
    System.out.print(""+"\n"); //先输出后换行
    System.out.println(); //先输出后换行
    System.out.println("abc123"); //双引号里写字符串
    System.out.println(123+4); //整数直接计算
    System.out.println(0.1+0.2); //输出不是0.3,而是0.30000000000000004,因为现代编译器基本采用IEEE 754标准,所以不能实现每一个十进制小数对应一个二进制小数
    System.out.println("Stu"+"dent"); //+(加号)为连接符
    int a=1;
    int b=1;
    System.out.println(a==b); //==(连等号)为判断是否相等的符号
    }
}

2.2输入

import java.util.Scanner; //导入Java的util包里的Scanner类
public class ScanTest{
    public static void main(String[] args){
        Scanner n=new Scanner(System.in); //创建Scanner类型的对象n,并使n能够获取控制台输入的功能即Scanner(System.in)
        String name=n.next(); //创建String类型的对象name,把对象n的next()方法赋值给name,并开始输入name的值
        System.out.println("name:"+name); //输出刚刚输入的name
    }
}

3.基本数据类型


3.1 byte

{
    byte b1=-128;
    byte b2=127;
    System.out.println(b1+"\n"+b2);
}

byte类型的范围-128~127(即-2^7~2^7-1)
1byte1个字节(Byte),8位(bit)


3.2 short

{
    short s1=-32768;
    short s2=32767;
    System.out.println(s1+"\n"+s2);
}

short类型的范围-32768~32767(即-2^15~2^15-1)
1short2个字节(Byte),16位(bit)


3.3 int

{
    int i1=-2147483648;
    int i2=2147483647;
    System.out.println(i1+"\n"+i2);
}

int类型的范围-2147483648~2147483647(即-2^31~2^31-1)
1int4个字节(Byte),32位(bit)


3.4 long

{
    long l1=-9223372036854775808L;
    long l2=9223372036854775807L;
    System.out.println(l1+"\n"+l2);
}

long类型的范围-9223372036854775808~9223372036854775807(即-2^63~2^63-1)
long类型在数字的末尾要加上L或l
1long8个字节(Byte),64位(bit)


3.5 float

{
    float f1=9.999999F; 
    float f2=9999999F;
    float f3=f2+1;
    System.out.println(f1); //9.999999
    System.out.println(f2); //9999999.0
    System.out.println(f3); //1.0E7,这里的E7指的是10^7即10的7次方
    float f4=-9999999F;
    float f5=-(f4-1);
    System.out.println(f4); //-9999999.0
    System.out.println(f5); //-1.0E7

    float f6=123123123f; //前7位数不会丢失精度,但从第8位开始就可能会出现精度丢失的情况
    float f7=f6+1;
    System.out.println("f6=" + f6); //f6=1.2312312E8
    System.out.println("f7=" + f7); //f7=1.2312312E8
    System.out.println(f6 == f7); //返回true,因为精度丢失了,它们输出一样的结果    
}

float类型的范围比较特殊,正常来说前7位都是正常的,超过7位后会出现E来表示科学计数法;然后在前8位中有一部分也是正常的,但到了后面的部分会出现精度丢失的现象
float类型在数字的末尾要加上F或f
1float4个字节(Byte),32位(bit)
Java中默认小数double类型,所以如果要使用float类型就需要加上F或f或者强制转换float类型


3.6 double

    double d1=0.0000001d;
    System.out.println(d1); //1.0E-7,即1*(10^-7)

double类型的范围要比float类型的要广很多,能精确到15~16位,具体有效位数可以自行查找;但是和float类型一样,到了后面的部分也会出现精度丢失的现象
double类型在数字的末尾要加上D或d
1double8个字节(Byte),64位(bit)


3.7 char

{
    char a1='a';
    System.out.println("a1="+a1); //a1=a
    char a2='1';
    System.out.println("a2="+a2); //a2=1
    char b1='\u0042';
    System.out.println("b1="+b1); //b1=B
    char b2='\t';
    System.out.println("I love"+b2+"you"); //I love	you
    char b3='\n';
    System.out.println(b3+"baby"); //(换行) baby
    char c1=1;
    System.out.println("c1="+c1); //c1=SOH,SOH(Start Of Headling)是ASCII码的第1个
    char c2=48;
    System.out.println("c2="+c2); //c2=0,ASCII码的第48个为0
    System.out.println("c1+c2="+(c1+c2)); //49,1+48
    System.out.println("a2+c1="+(a2+c1)); //50,49+1,a2的'1'为ASCII码的第49个
    System.out.println("a2+c2="+(a2+c2)); //97,49+48
}

char类型只能写入1个字符,字符表示Unicode(万国码)编码表中的每1个符号,每个符号使用单引号('')引起来,其中前128个符号ASCII表相同,且这个字符可以是转义字符,如上面的'\u0042'表示转义成Unicode的第42个即大写的B'\t'表示转义成制表符(即4个空格),'\n'表示转义成换行符(即换1行)

Unicode转义字符 含义
\u000a 换行符 \n
\u000d 回车符 \r
\u007b 大括号左半部 {
\u007d 大括号右半部 }
\u0008 退格符 \b
\u0009 制表符 \t
\u0022 双引号半边 "
\u0027 单引号半边 '
\u002b 加号 +
\u003b 分号 ;
\u005c 反斜杠 \
\u0041 ~ \u005a 字符 A~Z
\u0061 ~ \u007a 字符 a~z

char类型的变量的值如果带上单引号(''),则只能写入数字(可以是1个,也可以是多个),表示直接把写入的变量的值视为ASCII码对应的十进制数字,如上面char c2=48;意思是将ASCII码第48个(即是数字0)赋值给c2,所以System.out.println("c2="+c2);这个的结果是c2=0;而在System.out.println("a2+c1="+(a2+c1));中,结果之所以是50的原因是a2c1println()中进行的是ASCII码的值的相加运算,因为a2='1',所以'1'ASCII码中的值49,而c1=11本来代表的就是ASCII码的值1,所以50=49+1System.out.println("c1+c2="+(c1+c2));System.out.println("a2+c2="+(a2+c2));同理
1char2个字节(Byte),16位(bit),它的取值范围是0~65535


3.8 boolean

    boolean isMan=true;
    if(isMan){
        System.out.println("请进男厕");
    }
    else {
        System.out.println("请进女厕");
    }

1boolean1位,有truefalse这2个值,一个表示,一个表示,一般用于表示逻辑运算
boolean类型truefalse不谈字节大小,但实际上会被转换成10,所以占4字节(Byte)


4.引用数据类型


4.1 String

    String str2="";
    String str1="HelloChina!"; //String类型变量用""赋值,String类,属于引用数据类型,即是字符串
    System.out.println(str1); //HelloChina!

    int i2=128;  
    //String str=str1+i2-3; //报错,因为String类型表示字符串,-表示减法,所以+被视为了加法而非连接
    boolean isMan=true;
    //String str=isMan+i2+str1; //报错,因为布尔类型isMan开头会+会被视为加法而非连接,是错的,应该把str1放前面

    String str=str2+i2; //String类型做连接运算后还是String类型
    System.out.println(str); //128

    String str3=i2+""; //i2=128被放进""里了得到了str3
    System.out.println(str3); //128
    int num=Integer.parseInt(str3); //用Integer.parseInt()把str3里的数字取出来
    System.out.println(num-1); //127,128-1的结果

    String str4=3.2f+"";
    System.out.println(str4); //3.2
    //int num0=Integer.parseInt(str4); //取不出来str4,因为Integer.parseInt()取的是纯数字的字符串
    //System.out.println(num0-1);

    System.out.println(3+4+"Hello"); //7Hello,遇上了"Hello"是字符串,所以后面所有只能做连接运算
    System.out.println("Hello"+3+4); //Hello34
    System.out.println('a'+1+"Hello"); //98Hello,先'a'+1是ASCII运算,再遇上"Hello"做连接运算
    System.out.println("Hello"+'a'+1); //Helloa1

String类型变量用""赋值
②如果用连接运算的表达式来给String类型变量赋值,则首先不能出现-,其次boolean的变量不能放在=后的第一个,然后要么=后面有String类型的变量,要么有""


5.包装类和自动装箱、拆箱


5.1

6.自动类型提升和强制类型转换

7.基本数据类型与引用数据类型(String)的区别及转换


7.1区别1:变量和值存放的位置

基本数据类型变量和值一起存放在被划分的栈内存里的;而引用数据类型变量是存放在栈内存中,但其是存放在堆内存中的
②所以两个基本数据类型的变量的可以是一样的;但如果两个引用数据类型的变量有相同的值,那么他们会共用同一个堆内存里的,因为这个地址唯一的,而这两个变量都指向的这个地址


7.2区别2:判断是否相等

基本数据类型==!=来判断数据是否相等
引用数据类型equals()来判断数据是否相等(因为equals()比较的是内存地址)


7.3转换

String类型基本数据类型

基本数据类型String类型


🥰
载入天数...载入时分秒...
总访客 访问量