JAVA基础——数据类型与变量、运算符

============================================================================

1.java简介

(1)JAVA

  • JAVA是一门程序设计语言;
  • JAVA是一个由一系列计算机软件和规范形成的技术体系;
    • 这个技术体系提供了完整的软件开发和跨平台部署的支持环境;并广泛应用于嵌入式开发、移动终端、企业服务器、大型机等场合。

(2)JAVA应用

  • 企业级系统开发
    *比如大型复杂的企业级软件系统,Java的安全机制以及跨平台性的优势,其在分布式系统领域开发中有广泛应用,涉及到金融、电信、交通、电子商务、ERP系统等。

  • Web开发领域
    *Java语言在设计初期,赶上了互联网发展的风口,当时就瞄准了互联网开发,凭借稳定的性能表现和较好的扩展性,Java语言一直是大型互联网平台的重要解决方案。

  • android平台应用开发
    *Android是一种智能手机操作系统,Java是一门非常流行的编程语言。Android上的应用程序就是大多是用Java编写的,Android的SDK大部分就是直接将Java SDK翻译过来的,所以具有Java基础,也可以快速上手Android开发。

  • 大数据平台开发
    *大数据相关的各类框架,比如:Hadoop、spark、storm、flink等,以及各种中间件flume、kafka、sqoop等,这些框架以及工具等大多数是用Java语言开发的,随着大数据技术的落地应用,Java在大数据领域的应用前景也是比较广阔的。

(3)JAVA的优秀特性

  • Java与C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性,Java编译器能够检测许多在其他语言中仅在运行时才能够检测出来的问题。
  • “Write once,Run anywhere”:Java编译器通过生成与特定计算机结构无关的字节码文件->再通过对应JVM虚拟机对字节码文件中的指令进行翻译为该计算机可识别的指令-来实现一次编写,到处运行。

(4)JAVA、JDK、JRE、JVM的关系

  • JDK是对JAVA基础环境和相应开发平台标准和工具包的封装(zip)。 JDK是整个JAVA的核心,包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API(应用程序编程接口Application Programming Interface)包括rt.jar)。
  • JAVA是一门半编译型、半解释型语言。先通过javac编译程序把源文件.java进行编译,编译后生成的.class文件是由字节码组成的平台无关、面向JVM的文件。最后启动java虚拟机来运行.class文件,此时JVM会将字节码转换成平台能够理解的形式来运行。
    在这里插入图片描述

在这里插入图片描述

  • JRE 包含了JVM,Java基础类库。 JRE = JVM + Java基础类库;
  • JVM 就是Java的虚拟机,运行代码。

2.idea

  • IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版本还支持HTML,CSS,PHP,MySQL,Python等。免费版只支持Java,Kotlin等少数语言。

在这里插入图片描述

  • 先创建项目-创建包-创建源文件-创建类-变量、方法 的命名规则:
类型要求
项目全部小写、多个单词用-隔开 :java-project
全部小写 :Java.work
首字母大写\大驼峰 :HelloWorld(且public类名应与所在项目名保持一致)
变量首字母小写、多个单词时用小驼峰方式 :num、userName
常量全部大写、多个单词用_隔开 :NUM、MAX_COL
方法\属性名全部小写\小驼峰 :findNum()、show()

在这里插入图片描述
在这里插入图片描述

3.数据类型与变量

  • Java的数据类型分为:四类基本数据类型 与 引用数据类型String类型
  • 四类(8种):整型、浮点型、字符型以及布尔型
  • 计算数据类型的二进制位数:类型名.SIZE (如:Byte.SIZE)
  • 计算数据类型所占内存字节数:类型名.SIZE/8
        System.out.println(Byte.SIZE+","+Byte.SIZE/8);
        System.out.println(Integer.SIZE+","+Integer.SIZE/8);

在这里插入图片描述

  • 计算一个数据类型的取值范围:
    • 最小值:类型名.MIN_VALUE
    • 最大值:类型名.MAX_VALUE
package bite810;

/**
 * @Author: 19261
 * @Date: 2021/8/19 11:15
 */
public class DataType {
    public static void main(String[] args) {
        System.out.println("==============================================================");
        System.out.print("数据类型         \t 占有内存                \t 取值范围         \t\n");
        System.out.println("--------------------------------------------------------------");
        System.out.print("byte           \t 1个字节         \t"+Byte.MIN_VALUE+"~"+Byte.MAX_VALUE+("\t\n"));
        System.out.print("short          \t 2个字节         \t"+Short.MIN_VALUE+"~"+Short.MAX_VALUE+("\t\n"));
        System.out.print("char           \t 2个字节         \t"+Character.MIN_VALUE+"~"+Character.MAX_VALUE+("\t\n"));
        System.out.print("int            \t 4个字节         \t"+Integer.MIN_VALUE+"~"+Integer.MAX_VALUE+("\t\n"));
        System.out.print("long           \t 8个字节         \t"+Long.MIN_VALUE+"~"+Long.MAX_VALUE+("\t\n"));
        System.out.print("float          \t 4个字节         \t"+Float.MIN_VALUE+"~"+Float.MAX_VALUE+("\t\n"));
        System.out.print("double         \t 8个字节         \t"+Double.MIN_VALUE+"~"+Double.MAX_VALUE+("\t\n"));
        System.out.print("boolean        \t 无明确规定       \t true or false\t\n");
        System.out.println("==============================================================");
    }
}

在这里插入图片描述

  • 常见问题:
    在这里插入图片描述
  • 复制时不同类型不能赋值;但是可进行(类型名)强制类型转换;
    在这里插入图片描述
  • 字面整数常量-默认为int型;
  • 字面小数常量-默认为double型;
    在这里插入图片描述
  • 对于变量e 将不超过Int类型的常量数字赋值给long就不会报错;
  • 对于变量l:将超过int类型但不超过long类型的数字赋值给long类型的变量l;要想不报错;只要在数值后面加上字母 l /L即可。
    在这里插入图片描述

4.运算符

  • 运算符:对操作数进行操作的符合;不同运算符作用不同;
  • Java中的运算符包括 : 算术运算符、关系运算符、逻辑运算符、按位运算符、移位运算符、条件运算符;

(1)算数运算符(+ - * / %):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

*注意:在进行 / 除运算 和 %取余运算时;右操作数不能为0
*注意:整数进行除法/ 运算时,默认向下取整
*注意:如果 1+0.4 结果 1.4 类似这种左右操作数类型不一致时,默认数据类型提升=>总是向类型大的提升;

(2)自增、自减 运算符(前置/后置 ++ --):

*注意 单个变量自身进行前置运算++/–时;结果都为自加/自减之后的结果;
在这里插入图片描述
*注意: 变量自身进行后置++/–;输出的结果都为本身(自加/自减之前的值);
在这里插入图片描述
*注意:++/–之后 再进行赋值操作时,前置结果和自加自减变量的值一致;后置++/–=>将变量自加或自减前的值赋值给另一个变量;
在这里插入图片描述
*注意: 如果类似如下:对于 变量自身进行++/-- 之后再赋值给自身的操作(前置++/-- 运算和变量自加自减结果相同) 值得注意的时变量后置++/–之后赋值给自己的操作 如下:

在这里插入图片描述
针对:a=2; a=a++;结果仍为2; 原因如下:

  • 首先,上述代码 源文件(.java)进行 编译(javac)->得到 字节码文件(.class);该字节码文件中就是该程序运行时的指令;再通过Java jvm 运行代码;
  • 所以,要清楚 a=a++; 为啥和设想的不相同,就要清楚程序运行的指令;但是直接打开字节码文件是二进制文件,我们是看不懂的;所以借助Java中的反汇编工具指令 javap -c 进行翻译结果如下:
    在这里插入图片描述

*如上,从字节码反汇编[反汇编指令对照解释 跳转链接] 层面(二进制文件)看,需要知道:

  • 栈帧:局部变量表、操作数栈;
  • 局部变量表:主要存储函数的参数、函数中定义的局部变量(变量槽);
  • 操作数栈:主要用来存储函数运行时的用到的变量的中间结果;
    在这里插入图片描述

(3)关系运算符(< > == != >= <=):
在这里插入图片描述
在这里插入图片描述

*注意: 关系运算符也是有左右操作数,结果为Boolean类型的;如果关系成立true;反之false;

(4)逻辑运算符(&& || !):
在这里插入图片描述
在这里插入图片描述
*// !(表达式)结果与表达式结果相反;

(5)按位运算符(& | ~ ^):
在这里插入图片描述
*// ~操作数:是对操作数每一位二进制数进行取反操作 ;

(6)移位运算符(<< >> >>> )都为双目运算符:

  • 左移 <<: 最左侧位不要了, 最右侧补 0. <=> 乘以2;
  • 右移 >>: 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1).
  • 无符号右移 >>>: 最右侧位不要了, 最左侧补 0. <=> 除以2;

(6)条件运算符(? : )三目运算符:

  • 表达式1 ? 表达式2 : 表达式3
  • 当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值;
  • 当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值.

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值