JAVA常见的基础知识

1.JAVA重要特点
1.JAVA语言是面向对象的(OOP)
2.JAVA语言是健壮的。JAVA的强类型机制、异常处理、垃圾的自动收集等是JAVA程序健壮性的重要保证
3.JAVA语言是跨平台性的
  • .java文件编译成.class文件,不同操作系统上安装与系统一致的JVM,就可以实现JAVA程序跨平台性
4.JAVA语言是解释型的
5.解释型语言:JavaScript PHP JAVA 编译型语言: c c++
6.区别
  • 解释性语言,编译后的代码,不能直接被机器执行,需要解释器来执行;编译型语言,编译后的代码,可以直接被机器执行。
2.JAVA运行机制及运行过程
1.JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器,包含在JDK中
2.对于不同的平台,有不同的虚拟机
3.JAVA虚拟机机制屏蔽了底层运行平台的差别,实现了"一次编译,到处运行"
3.JDK JRE
  1. JDK基本介绍

    • JDK的全称(Java Development Kit JAVA开发工具包),JDK = JRE+JAVA的开发工具

    • JDK是提供给JAVA开发人员使用的,其中包含了JAVA的开发工具,也包含了JRE

  2. JRE基本介绍

    • JRE(Java Runtime Environment JAVA运行环境),JRE = JVM+JAVA的核心类库

    • 包括JAVA虚拟机(JVM java Virtual Machine)和Java程序所需的核心类库等

    • 运行Java程序最低的标准

4.JAVA执行流程

在这里插入图片描述

3.JAVA开发注意事项和细节说明
  • JAVA源文件以.java为扩展名。源文件的基本组成部分是类(class)
  • JAVA应用程序的执行入口是main()方法,它固有的书写格式:public static void main(String[] args){…}
  • JAVA语言严格区分大小写
  • JAVA方法由一条条语句构成,每个语句以";"结束
  • 大括号都是成对出现的,缺一不可
  • 一个源文件最多只能有一个public类,其他类的个数不限
  • 如果源文件包含一个public类,则文件名必须按该类名命名
  • 一个源文件中最多只能有一个public类。其他类的个数不限,也可以将main方法写在非public类中,然后执行运行非public类,这样入口方法就是非public的main方法
4.编码
1.ASCII
  • ASCII码:上个世纪60年代,美国制定了一套字符编码(使用一个字节),对英文字符与二进制位之间的关系,做了统一规定,这被称为ASCII码,ASCII码一共规定了128个字符的编码,只占用了一个字节的后面7位,最前面的一位统一规定为0
  • 缺点:不能表示所有字符
2.Unicode
  • Unicode的好处:一种编码,将世界上所有符号都纳入其中,每个符号都给予一个独一无二的编码,使用Unicode没有乱码的问题
  • Unicode的缺点:一个英文字母和一个汉字都占用了两个字节,这对于存储空间来说是浪费
  • 2的16次方是65536,所以最多编码是65536个字符
  • 编码0-127的字符是与ASCII的编码一样的,Unicode码兼容ASCII码
3.UTF-8
  • UTF-8是互联网上使用最广泛的一种Unicode的实现方式
  • UTF-8是一种变长的编码方式,他可以使用1-6个字节表示一个符号,根据不同的符号而变化字节长度
  • 使用大小可变的编码,字母占一个字节,汉字占3个字节
5.数据类型
1.数据类型:JVM会在编译时期将boolean类型的数据转换为int,使用1表示true,0表示false
符号字节默认值包装类型
byte180Byte
char216‘\u0000’Character
short2160Short
int4320Integer
float4320.0fFloat
long8640LLong
double8640.0Double
boolean18falseBoolean
2.包装类型:基本类型都有对应的包装类型,基本类型与其对应包装类型之间的赋值使用自动装箱和拆箱完成
Integer x = 2;//装箱   调用了Integer.valueOf(2)
int y = x;//拆箱   调用了x.intValue()
3.基本数据类型缓存池
  • new Integer(123)与Integer.valueOf(123)的区别在于

    • new Integer(123)每次都会新建一个对象
    • Integer.valueOf(123)会使用缓存池中的对象,多次调用取得一个对象的引用
    Integer x = new Integer(123);
    Integer y = new Integer(123);
    System.out.println(x == y);//false
    System.out.println(x.equals(y));//true
    
    //Integer.valueOf()会使用缓存池中的对象,多次调用取得同一个对象的引用,在Java8中缓存池的大小为-128~127
    Integer z = Integer.valueOf(123);
    Integer k = Integer.valueOf(123);
    System.out.println(z == k);//true
    System.out.println(z.equals(k));//true
    
    //超过缓存池大小,不会使用同一对象,可以通过-XX:AutoBoxCacheMax=<size>来指定这个缓冲池的大小
    Integer z1 = Integer.valueOf(188);
    Integer k1 = Integer.valueOf(188);
    System.out.println(z1 == k1);//false
    
    //valueOf()方法的实现比较简单,就是先判断值是否在缓存池中,如果在的话就直接换回缓存池的内容(源码public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
    
  • 基本类型对应的缓存池

    符号默认大小
    booleantrue/false
    byte-128~127
    short-128~127
    char\u0000~\u0007F
    int-128~127
    4.float与double
    //float与double:java不能隐式执行向下转型,会使精度降低
    //1.字面量属于double类型,不能直接将1.1直接赋值给float变量,向下转型
    float f = 1.1;//error
    float f = 1.1f;//才是float类型
    //2.隐式类型转换,字面量1是int类型,它比short类型精度要高,因此不能隐式将int类型向下转型为short类型,但是使用+=/++运算符会执行隐式类型转换
    short s = 1;
    s = s+1//error
    
    5.字符类型(Char)
    1. 字符类型可以表示单个字符,字符类型是char,char是两个字节(可以存放汉字),多个字符可以使用String(字符串)
    		//显示char的基本使用
            char a = 'a';
            char a1 = '\t';//制表符
            char a2 = 97;
            System.out.println(a+"--"+a1+"---"+a2+"---");//a--	---a---
    
    1. 字符细节使用【注意】

      • 字符常量是使用单引号括起来的单个字符

      • Java中还允许使用转义字符’\'来将期后的字符串转变为特殊字符型常量

      • 在java中,char的本质是一个整数,在输出时,是unicode码对应的字符

      • 可以直接给char赋值一个整数,然后输出时,会按照对应的unicode字符输出

      • char类型是可以进行运算的,相当于一个整数,因为他都是对应的Unicode码

        【需要输出整数(int),需要输出字符(char)】

        char ch = 97;
        char chs = 'A';
        System.out.println(chs-ch);//32
        
    2. 字符类型本质

      • 字符型存储到计算机中,需要将字符对应的码值(整数)找出来,转为二进制存储到计算机
      • 字符和码值的对应关系是通过字符编码表决定的(是规定好的)
      • 常用的字符编码
        • ASCII (ASCII编码表 一个字节表示,一个128个字符,实际上一个字节可以表示256个字符,只用了128)
        • Unicode(Unicode编码表 固定大小的编码,使用两个字节来表示字符,字母和汉字同一都是占两个字节,浪费空间)
        • UTF-8(编码表,大小可变的编码 字母使用一个字节,汉字使用三个字节)
        • GBK(编码表 可以表示汉字,而且范围广,字母使用一个字节,汉字二个字节)
        • GB2312(编码表 可以表示汉字 GB2312 < GBK)
        • big5码(繁体中文,中国台湾 香港)
    6.布尔类型 boolean
    • 布尔类型也是boolean类型,boolean类型数据只允许取值true和false,无null,默认为false
    • 布尔类型占一个字节
    • boolean类型适用于逻辑运算,一般用于程序流程控制
    7.基本数据类型的转换
    1. 自动类型转换

      • java程序在进行赋值或运算时,精度小的类型自动转换为精度大的数据类型

        char----> int-----> long----->float-------->double

        byte ---->short----->int----->long—float---->double

    2. 自动类型转换【注意】

      • 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算
      • 当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换
      • (byte,short)和char之间不会相互自动转换
      • byte,short,char三者计算时,在计算机系统中,会自动转换为int进行计算
    3. 强制类型转换

      • 自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型,使用时要加上强制转换符(),但可能造成精度损失
    4. 强制类型转换细节说明【注意】

      • 当进行数据的大小从 大---->小,就需要使用强制转换

      • 强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级

      • char类型可以保存int的常量值,但不能保存int的变量,需要强转

        char nums = 100;
        int numx = 100;
        //char c2 = numx;   需要进行强制类型转换
        char c3 = (char)numx;
        System.out.println(c3);//d
        
      • byte和short类型在进行运算时,当做int类型处理

    8.String和基本数据类型转换
    1. 基本数据类型转换为字符串

      String.ValueOf();
      
    2. 字符串转换为基本数据类型

      //int
      Integer.parseInt("");
      //double
      Double.parseDouble("");
      //float
      Float.parseFloat("");
      //short
      Short.parseShort("");
      //long
      Long.parseLong("");
      //boolean
      Boolean.parseBoolean("");
      //byte
      Byte.parseByte("")
      
    3. 字符和字符串之间的转换

      //返回index位置的char字符(从0计数)
      String str = "Hello,world";
      str.charAt(index);
      //将字符串转为字符数组
      str.toCharArray();
      //1.将字符数组转化为字符串
      String strs = String.valueOf(new char[] {'c','e','r'});
      //2.将字符转化为字符串效率最高的方法
      String s = String.valueOf('c');
      //3.通过Character的toString(char)方法 ====>实际上还是调用String.ValueOf(char)
      String tr = Character.toString('c');
      
    6.键盘输入
    import java.util.Scanner;
    
    Scanner scanner = new Scanner(System.in);
    int i = scanner.nextInt();
    System.out.println(i);
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值