Java基础(一)语法基础

大纲

JAVA基础

1.Java语言及JVM

知识点:

1)什么是Java语言:

  • Java是跨平台的纯面向对象的语言

2)JVM概念:

  • JVM是运行在操作系统之上,是一个可以运行java代码的虚拟计算机;
  • 对于不同的平台,有不同的虚拟机,其屏蔽了底层运行平台的差别,实现了“一次编译,导出运行”。

什么是JDK、JRE、JVM,及其之间的关系:

  • JDK(Java Development Kit,Java开发工具包):
    • 包含JRE以及一些开发工具
    • 面向开发人员使用(开发用的)
    • JDK:javac.exe:编译工具, java.exe:运行工具
  • JRE(Java Runtime Environment,Java运行时环境):
    • 包含JVM以及一些核心的运行类库,面向运行人员使用(运行用的)
    • 核心类库,简单理解就是已经写好的java代码(eg.写代码时System等代码的使用)
  • JVM(Java Virtual Machine, Java 虚拟机):
    • 包含字节码等核心内容(核心所在,跨平台的关键)
    • 运行程序的载体【平台】
      在这里插入图片描述

java编译运行原理

问题:为什么Java能够实现“一次编译,到处运行”?

  • Java 引入了字节码的概念,JVM只能认识字节码,并将它们解释到系统的 API 调用,JVM把字节码解释成具体平台上的机器指令
  • 对于不同的平台,有不同的虚拟机,其屏蔽了底层运行平台的差别,实现了“一次编译,导出运行”。
    在这里插入图片描述

编译运行流程:

在这里插入图片描述

2.数据类型

基础数据类型,四类八种:

1)整数类型:(使用最多的是int)
- byte 1个字节;范围 : -128~127 2^7=128 + 一位符号位
- short 2个字节
- int 4个字节
- long 8个字节
-
2)小数类型:

  • float(单精度) 4个字节
  • double(双精度) 8个字节

3)布尔类型:

  • boolean 1个字节 true false

  • 回答:理论上来说,八分之一个字节就能表示他的大小,但是计算机当中最小的存储单元是字节,所以它应该占1个字节。

boolean类型数据注意事项:

  • 只允许取值true和false,无null
  • 不可以 0 或非 0 的整数替代false和true,这点和C语言不同
  • boolean类型不可以转换为其它的数据类型
  • Java虚拟机中没有任何供boolean值专用的字节码指令,java语言表达所操作的boolean值,在编译之后都使用java虚拟机中的int数据类型来代替:true用1表示,false用0表示《java虚拟机规范 8版》

4)字符类型:

  • char 2个字节 0~65535 = 2^(2*8)-1
// a = 97
// A = 65
// 0 = 48
char c1 = ‘a’;
char c2 = 65;
char c3 = 48;

占用空间/取值范围:

  • 计算机中最小的存储[单元] - 字节-byte
  • 计算机中最小的存储[单位] - 位-Bit-比特
  • 1个字节 = 8个位 (Bit) 比特位

问题:byte存储空间为8,最小值为 1111 1111 不应该代表 -127么?

Java程序默认的运算是十进制, 但是在底层运算的过程中, 都是以二进制(补码)的形式在运算.

byte b = (byte) 130//问 b的值是?
/*
130存储形式:0000 0000 0000 0000 0000 0000 1000 0010
对应byte8位补码的存储为:1000 0010  其反码为  1000 0001  其源码为 1111 1110   
对应十进制为 -126
*/

默认值:

  • 整数(四种类型): 0
  • 小数(两种类型): 0.0
  • 布尔: false
  • 字符: 0 或写为:’\u0000’(表现为空)
  • 引用数据类型: null

注意事项:

1)所有整数默认都是int类型 、所有小数默认都是double

2)定义float类型变量应该加F的标识

float num = 12.3; 
//一开始就会报错,需要加F标识:
float num2 = 12.3F;
//因为12.3常量默认是8个字节的double类型,直接赋值会报错(因为涉及强制转换,应转换为float类型);

3)定义Long类型变量应该加L的标识,建议使用大写.

long num = 12345678; 
//常量值默认是用int类型存储的,当数值过大时会产生溢出,正确做法如下:
long num = 123456789999L;

4)为什么float占4个字节,long占8个字节,float却比long要大呢?

  • 因为整数和小数,底层的二进制存储结构不同.

5)byte, short, char, int 在一起运算的时候, 都会先提升为int (因为所有整数默认都是int类型),

  • 其余类型的运算, 都是小的提升为大的.

3.运算符

知识点:

  • 运算符的分类?

  • 算数运算符有哪些?

      算数运算符(自增自减运算符)
      赋值运算符 
      扩展赋值运算符:+= 、-=、*=、/= 、%=
      关系运算符[比较运算符]
      逻辑运算符
      三元运算符[三目运算符]
    

注意事项:

  • 1)整数相除结果只能是整数
  • 2)如果想计算出小数, 必须要有浮点类型数据参数运算
  • 3)字符与字符串参与加法运算
  • 4)自增与自减操作【案例
int x = 4;
//   4 +  6 + 60
int y = (x++)+(++x)+(x*10);

System.out.println("x="
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值