变量和运算符

本文详细介绍了Java的基础知识,包括JDK、JRE和JVM的区别和联系,Java程序的运行过程,变量、常量、数据类型的概念及其规则,以及运算符的使用。此外,还提到了注释的规范和重要性。内容深入浅出,适合Java初学者学习。
摘要由CSDN通过智能技术生成

初识Java

JDK、JRE、JVM的区别和联系

JDK: Java SE Development kit

Java的开发程序包,包含了JRE,还具备一些程序开发所必备的工具。

javac——编译工具,jstack——查看JVM的堆栈内存情况。

JRE:Java Runtime Enviroment

使用Java开发的系统或者app要跑起来必须具备的环境。

Java运行的环境。——类似你手机的操作系统。

JVM:Java Virtual Machine

就是我们常说的Java虚拟机,它是整个Java实现跨平台的最核心的部分,所有Java程序首先被编译为.class文件,这种类文件可以在虚拟机上运行也就是说class并于直接与机器的操作系统相对应。

简单来说,JDK包含JRE,JRE包含JVM的关系。

Java程序的运行

要把一个Java程序运行起来,需要经历两个步骤。

  1. 编译阶段

*.java(Test.java - 源文件,包含我们写好的源代码 - 给程序看的代码)javac -> *.class(二进制文件,是给JVM阅读)编译阶段最核心的步骤就是将*.java -> *.class。

  1. 执行阶段

JVM执行编译后的字节码,交给操作系统具体执行。

变量

变量就是可以改变的量,在程序运行过程中产生的数据,会占用一些内存空间,这些内存空间就是变量,内存空间的标识名就是变量名。

变量的作用域

也就是变量的生效范围,一般是变量定义所在的代码块(大括号)。

变量的命名规则

硬性指标:

  1. 一个变量名只能包含数字,字母,下划线。
  2. 数字不能开头。
  3. 变量名是大小写敏感的,即num和Num是不同的变量。

虽然语法上也允许使用中文和美元符($)命名变量,但是强烈不推荐这样做。

软性指标:

  1. 变量命名要具有描述性,见名知意。
  2. 变量名不宜使用拼音(但是不绝对)。
  3. 变量名的词性推荐使用名词。
  4. 变量命名推荐小驼峰命名法,当一个变量名由多个单词构成的时候,除了第一个单词之外,其他单词首字母都大写。

常量

常量主要分为两种体现形式,第一种是字面值常量,字面值常量只有五种类型,分别是整形,字符型,浮点型,字符串型和布尔型。第二种是被final修饰的变量,变量都不能在程序的运行过程中发生修改。

数据类型

Java属于强类型的语言,定义一个变量时,必须指定这个变量的类型,在这个变量之后赋值的过程中只能赋值为相应类型的值。

数据类型

基本数据类型

基本数据类型可分为三类,数值型、字符型char和布尔型boolean,其中数值型可分为整形和浮点型,整形有四种,分别为byte、short、int和long,浮点型有两种,分别为float和double,一共8种基本数据类型。

布尔型

boolean:只有两种取值,表示真为true,表示假为false。和C不同,在C中,布尔值没有专属的字面量常量,0就代表假,1就代表真。在Java中,布尔型变量不能和其它类型变量相互转换,自然也就不能用其他变量类型代替。一个布尔型变量占用一个字节。

字符型

char:用单引号标起来的单个字符,被称为字符型。无论是什么语言,只要是字符型就占用两个字节。

数值型
  1. byte:整形,占用一个字节。
  2. short:整形,占用两个字节。
  3. int:整形,占用四个字节。
  4. long:整形,占用八个字节。
  5. float:浮点型,占用四个字节。
  6. double:浮点型,占用八个字节。

引用数据类型

包括数组,类,接口。

对于每一个基本数据类型都有一个相对应的包装类,int->Integer,char->Character,short->Short,long->Long,byte->Byte,double->Double,float->Float,boolean->Boolean。只有int和char比较特殊,其他都是基本数据类型的首字母大写。

数据类型转换

  1. 不同数值类型的变量之间赋值,表示范围更小的类型能隐式转换成范围较大的类型,反之则不行。

  2. int和boolean是毫不相关的类型,不能互相赋值。

  3. 当使用int字面量给byte赋值的时候,Java会自动进行一些检查校验,判断赋值是否合理。

    int a = 10;
    byte b;
    b = a;//编译出错
    b = 100;//编译通过
    b = 256;//编译出错
    
  4. 强制类型转换

当使用(类型)的方式可以将double类型强制转成int。但是

​ 1) 强制类型转换可能会导致精度丢失。

​ 2) 强制类型转换不一定成功,互不相干的类型之间无法强制类型转换。

数值提升

  1. 当较小类型和较大类型进行混合运算时,小类型会提升成大类型,得到的结果也需要用大类型来接收,如果用小类型来接收则需要强制类型转换,并会丢失精度。

  2. byte和byte的运算

    在运算时,系统会先将小于四字节的类型会先提升为int,再参与计算。

    //错误写法
    byte a = 10;
    byte b = 20;
    byte c = 30;
    System.out.println(c);//编译报错。
    //正确写法
    c = (byte)(a + b);
    

int和String的相互转换

  1. int转成String

    方法一:直接与字符串相加 方法二:使用String.valueOf();

  2. String转成int

    使用Integer.parseInt();

运算符

算术运算符

基本四则运算+ - * /

  1. 当int除以int时,得到的还是int,需要使用double来计算。
  2. 0不能作为除数。
  3. %表示取余,不仅可以对整数,还可以对浮点数进行取余。
  4. 增量赋值运算符 += -= *= /= %= a += 1 等价于 a = a + 1
  5. 自增自减运算符 ++ – 前置++先++再赋值,后置++先赋值再++

关系运算符

主要有六个 == != < > <= >=

关系运算符的表达式返回值都是boolean类型。

逻辑运算符

  1. 逻辑与:两个操作数都为true时,结果为true,否则结果为false。
  2. 逻辑或:两个操作数都为false时,结果为false,否则结果为true。
  3. 逻辑非:为单目操作符,操作数为true时,结果为false,操作数为false时,结果为true。

&& 和 ||都遵循短路求值规则,当已经能判断结果时,则后续代码不会执行。

& 和|在操作数都是boolean时也可以表示逻辑运算,不支持短路求值规则,不推荐使用。

位运算符

按内存中二进制位对数据进行操作

位运算符有主要有四个

&:两个二进制位都为1则结果为1,否则为0。

|:两个二进制位都为0则结果为0,否则为1。

~:按位取反,1转为0,0转为1。

^:两个二进制位不同则结果为1,否则结果为0。

条件运算符

条件运算符只有一个,是三目操作符:表达式1 ? 表达式2 :表达式3

当表达式1为true时,则结果为表达式2的值,否则结果为表达式3的值。

移位运算

移位运算符有三个:<< >> >>>

<<:左移,右侧补0。

>>:右移,正数左侧补0,负数左侧补1。

>>>:无符号右移,左侧补0。

注释

注释非常重要,不参与编译运行,作用是解释代码功能。

单行注释://注释内容//(用的最多)

多行注释:/*注释内容*/(不推荐)

文档注释:/**文档注释*/(常见于方法和类之上描述方法和类的作用),可用来自动生成文档。

注释规范:1. 内容准确 2. 篇幅合理 3. 使用中文 4. 积极向上

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值