Java基础----Java的运行原理、jdk的配置、标识符、数据类型总结----含思维导图

JDK1.8安装配置教程:JDK1.8免安装版

Java简介

一、Java的运行原理

  1、将Java原程序通过编译器javac编译生成二进制字节码的类,将类通过类加载器加载到Java虚拟机中,通过字节码验证器验证,然后通过Java解释器将二进制字节码解释成计算机可以识别的指令完成执行。
  2、javac.exe:Java编译器,将Java源程序编译成字节码
  3、java.exe:Java解释器,直接从类文件执行Java应用程序
  4、jar.exe:Jar文件打包工具
  5、javadoc.exe参考文档生成器

二、Java标识符

  (1)标识符的种类:
      项目名、包名、类名、方法名、参数名、变量名统称为标识符。
  (2)标识符的命名要求
    ①所有的标识符都必须以字母、下划线或美元 符作开头,后面的字符包括数字、大小写字母、下划线以及美元 符作开头,后面的字符包括数字、大小写字母、下划线以及美元 符作开头,后面的字符包括数字、大小写字母、下划线以及美元符 (错误举例:#mark; 包含#与;,所以不是合法标识符)。
    ②标识符不能是关键字,但可以包含关键字,关键字一共49个。标识符区分大小写。
    ③标识符也可以Unicode标识符(例如汉字),但是请尽量避免使用。
  (3)标识符的命名规则
    ①项目名、包名:包名中的字母一律小写,如:xxxyyyzzz
    ②类名、接口名:使用名词,每个单词首字母大写,如:XxxYyyZzz
    ③方法名,参数名,变量名:第一个单词首字母小写,后面每个单词首字母大写(goto、sizeof、const这三个变量名不能做为标识符)如:xxxYyyZzz
    ④常量名:全大写,有多个单词时用下划线分隔开

三、Java语言主要 元素组成

     标识符、关键字、文字、运算符和分隔符。

四、Java的优缺点

  (1)优点:简单、面向对象、解释型、稳定性、结构中立、可移植
  (2)缺点:
    ① 解释器型运行速度慢
    ② 由于Java的跨平台性,语言标准有待进一步统一
    ③ 复杂,代码量大
    ④ 不支持底层操作

五、数据类型

1、数据类型分类

   1.1、基本数据类型
   1.2、引用数据类型

2、基本数据类型

  2.1、数值类型
    (1)byte:1个字节8位
      ①byte b = (byte)128; System.out.println(b);输出结果为:-128;因为最大为127 即01111111;128=01111111+00000001=1111111;即-128第一位0表示正数;1表示负数;byte b = 128; System.out.println(b);会报错
      ②两个byte类型的整数相加,结果是int类型。
      ③依次定义相同数据类型的变量:byte a=1,b=2,c=3;
    (2)short:2个字节16位
    (3)int:4个字节32位
    (4)long:8个字节64位
      ①使用时应该在后尾+L;
      ②八进制:以0开头的数值;例:int a = 012;
      ③十六进制:1 2 3 4 5 6 7 8 9 a b c d e f ;以0x开头数值;例:int a =0x10;long a = 0x12abL;
  2.2、浮点类型
    (1)float:4个字节32位
    (2)double:8个字节64位
    (3)其他补充
      ① Java中默认的浮点类型为double;所以不能直接将带小数点的数值赋值给float类型。
      ② Float f1 = 12.34;会报错。正确写法:float f1 = 12.34f;
      ③ Double d1 = 12.34;此句不会报错,因为默认类型就是double类型。
  2.3、字符类型
    (1)char:2个字节16位
    (2)char 类型的值必须写在‘ ’内,并且只有一个字符,例:char a = ‘A’;
  2.4、布尔类型
     boolean:1个字节8位、只有true与false两种类型。
  2.5、八种基本数据类型对应的封装类

基本类型byteshortintlongfloatdoublecharboolean
封装类ByteShortIntegerLongFloatDoubleCharacterBoolean
3、引用数据类型

  3.1、类(class)
  3.2、接口(interface)
  3.3、数组
    (1)一维数组的声明方式
      ① int[] arr = {3,1,2,5,6}
      ② int[] arr = new int[]{3,1,2,5,6}
      ③ int[] arr = new int[5];//此时会赋默认的值
      ④ int arr[] = new int[5]; //不推荐
    (2)二维数组的声明方式
      ① int[][] arr1 = { { 3, 2, 7 }, { 1, 5 }, { 6 } };
      ② int[][] arr2 = new int[3][4]; // 3行4列的规则数组
      ③ int[][] arr3 = new int[2][];
      注意:当数组里面的值为空时,去查找这个值时会出现空指针。如下举例:int[] arr1 = null;arr[0] = ; // 数组是引用类型,值为null时使用数组将抛出NullPointerException异常
  3.4、枚举(Enum)
  3.5、注解(@interface)

4、String字符串类型

  4.1、对字符串正确赋初值的三种方式
      ① String str;
      ② String str = “good!”;在字符串常量池中
      ③ String str = new String(“good!”);在字符串常量池和堆中都创建对象。
  4.2、String代表不可变的字符序列,简称:不可变性
  注意: String 不属于基本数据类型,只是代表一个类,属于引用类型

六、数据类型转换

1、自动类型转换(也叫隐式类型转换)

  (1)、将小类型直接赋值给大类型的变量,不需要进行声明式的转换。将精度低的类型直接赋值给精度高的类型
  (2)、将int类型转byte类型 、将int类型转short类型, 如果int类型的数据值没有超过byte类型、short类型取值范围的最大值,则会自动类型转换;例如:byte a = 35;无需写成byte a = (byte)35;除了int、byte、short这三个类型之外的大类型转小类型,都需要强制转换。
  (3)、这样写,就不会再进行隐式类型转换了:int f=35; byte s=f;会报错;需要改为byte s=(byte)f;还有下面这种情况:byte i=1;byte a=i+10;这句就会报错,因为只要右边不是单纯的数字相加,含有变量,就不会再进行自动类型转换了,此时需要强制类型转换:byte a= (byte)(i+10);
  (4)、一旦char类型的变量进行了数学运算,那么字符就会按照一定的规则翻译成一个数字。
  (5)、 byte+byte会自动提升为int+int;然后再进行运算,所以两个byte类型的变量进行运算的时候,要用int类型的变量进行接收;例如:byte a=1;byte b=2;int c = a+b
  注意:a+=b和a=a+b的区别
      ① a+=b是自动转化类型,a = a+b则不会自动转化,需要手动进行强制类型转化。
      ② b1+=b2;不需要强制转换,会直接将结果转为目标类型,不会报错。
      ③ byte b,b1=2,b2=5;b=(byte)(b1+b2);需要强制转换,不然会报错。如果是:byte b; b=1+1;此句不会报错,因为1+1优先级比=高,所以先是运算1+1;然后直接将2赋值给了b,所以不会报错,是正确的表达。
  总结:+=、-=、*=、/=、%=:可以直接将结果转为目标类型,不需要强制类型转换。
  其它补充: 如果被转换变量的值超过目标类型的最大值,超出部分从目标类型的最小值进行累加。例:int i = 129; byte b = (byte)i;System.out.println(b);输出结果为-127;因为byte类型最小值为-128,129超出最大值127两位数,即2;则从最小值往前数2位:-128、-127;所以输出为-127;

2、强制类型转换(也叫显式类型转换)

  (1)、将大类型转小类型 、将精度高的类型转精度低的类型,指基本数据类型之间的转换,在某种情况下会丢失精度.

3、数据类型自动提升

  (1)、小类型和大类型进行操作结果是大类型
  (2)、精度低的类型与精度高的类型进行操作结果是精度高的类型
  (3)、分析System.out.println(a+ 1+“”)与System.out.println(“”+a+ 1);例如:int a =300;System.out.println(a+ 1+“”); System.out.println(“”+a+ 1); System.out.println(“”+a+ 1);输出结果分别为:301;3001
  注意:double类型、float类型转int类型的时候,并不会对数据四舍五入,而是会把小数部分全部舍弃掉,只保留整数部分数值。

4、基本数据类型转换为String类型三种方式

  (1)、“” + 基本数据类型
  (2)、String.valueOf(参数);参数可以为基本数据类型。
  (3)、将基本数据类型转为封装类对象,通过封装类对象toString();(不推荐) 。例如:Integer inte = i; String str2 = inte. toString();

5、String类型转换为其他八种基本数据类型方式

  5.1、第一种方式(直接)
    (1)String类型转换为byte类型:Byte封装类中的parseByte()方法
    (2)String类型转换为byte类型数组:String字符串.getBytes();
    (3)String类型转换为short类型:Short封装类中的parseShort()方法
    (4)String类型转换为int类型:Integer封装类中的parseInt()方法
    (5)String类型转换为long类型:Long封装类中的parseLong()方法
    (6)String类型转换为float类型:Float封装类中的parseFloat()方法
    (7)String类型转换为double类型:Double封装类中的parseDouble()方法
    (8)String类型转换为char类型:不能直接转换,要将字符串转化为char类型的数组的ToCharArray()方法
    (9)String类型转换为boolean类型:Boolean封装类中的parseBoolean方法,只有字符串的值是true时(不区分大小写),结果才是true,否则都是false
  5.2、第二种方式(间接)
    (1)通过封装类,先将字符串转为封装类对象。然后通过拆箱操作或者封装类对象.xxxValue()

七、思维导图

在这里插入图片描述

思维导图

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值