02 Java基础语法(变量+数据类型+运算符)(上)

简介: 02 Java基础语法(变量+数据类型+运算符)

2 基础语法

2.1 二进制(复习总结)
  • 冯·诺依曼理论核心思想
  • 计算机应该采用二进制。
  • 存储程序执行:程序和数据首先存入内存,并按照事先编写好的程序顺序执行。
  • 计算机硬件由运算器、控制器、存储器、输入设备、输出设备五大部分组成。
  • 计算机是由电流驱动的,电流只有正极和负极,只有这两种状态,也就是说计算机底层实际上只能表示这两种状态,那他怎么能够表示现实世界中负责的数据呢?计算机就是采用二进制的方式来表示这些复杂数据的。
  • 电流只有正极和负极,那么就可以表示基本的两个数字:1和0
  • 而1和0这样的数字串组成的数字我们称为二进制。

二进制的特点:满2进1位 (1 10 11 100…)

十进制的特点:满十进1位 (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20…)

进制转换(二进制 八进制 十进制 十六进制)
  • 从右到左用二进制的每个数去乘以2的相应次方相加。

  • 公式:从二进制的最右边开始,2的0次幂,2的1次幂,2的2次幂,2的3次幂...以此类推,然后让每一位和对应的二进制位相乘,然后将每一个相乘的结果再求和,就是最终的十进制。
  • 除2取余,逆序排列。
    公式:让十进制的数字除以2(不断的除以2,直到最后商是0为止),然后余数逆序输出,就是对应的二进制。
  • 进制转换不是必须掌握的,在实际开发中也用不上,如果遇到了,不会转换,可以使用计算器。
2.2 变量
2.2.1 变量定义

概念:计算机内存中的一块存储空间,是存储数据的基本单元。

变量三要素:变量类型,变量名,变量值

2.2.2 使用变量
  • **申明变量(**申请内存地址) main自动填充
  • 语法: 数据类型 变量名; ------int a;(数据类型空格变量名)
  • 变量初始化(给变量赋值)
  • 语法: 变量名 = 值; -------a = 10;
  • 使用变量(注意,变量初始化了才能使用)
  • 语法:打印输出、方法传参、进行计算; -----System.out.println(a); sout自动填充输出

Java是强类型语言,变量的类型必须与数据的类型一致。

2.2.3 声明变量的3种方式
  • 先声明,再赋值:【常用】
    数据类型 变量名;
    变量名 = 值;
  • 声明并赋值:【常用】
    数据类型 变量名 = 值;

多个同类型变量的声明与赋值:【了解】

数据类型 变量1 , 变量2 , 变量3 = 值3 , 变量4 , 变量5 = 值5;

public class test01 {
    public static void main(String[] args) {
       int a;  //先声明
       a = 10;  //再赋值
        System.out.println(a);
        int money = 10000;//声明变量+初始化
        System.out.println(money);        
    }
}


public class test01 {         
    public static void main(String[] args) {
        int b = 66;int c = 77;int d = 99;         //连续定义
        System.out.println("c的值为"+c);
    }
}//c的值为77


public class test01 {
    public static void main(String[] args) {
        int a,b,c,d = 66;   //相当于int a未赋值; 同 bc未赋值; int d = 66;
        System.out.println("c的值为"+a);
    }
}//报错  不能输出a/b/c,仅仅能输出d
  • 注意:在java中变量一定要初始化(赋值)才能使用
2.3 数据类型和数据类型转换

数据类型java是强类型语言,在定义变量的时候必须指定数据类型

  1. 基本数据类型(在java语言语法中已经定义好了的类型)
  1. 整数类型 byte short int long
  2. 浮点类型(小数类型)float double
  3. 布尔类型boolean
  4. 字符类型char
  1. 引用数据类型 (String
2.3.1 整数类型

4种可表示数值范围不同,常用int和long

定义long类型的变量的时候尽量(long = 1000937766L)加上L l

类型 所占字节 所占位数 取值范围 二进制(十进制)
byte 1字节 8位 -2^7 ~ 2^7-1 (-258~127)
short 2字节 16 -2^15 ~2^15-1(-32768 ~ 32767)
int 4 32 -2^31 ~ 2^31-1(-2147483648 ~2147483647)
long 8 64 -2^63 ~ 2^63-1(-9223372036854775808~9223372036854775807)
拓展

二进制赋值 0b

八进制赋值0

十六进制赋值0x

byte n1= 0b1111;//输出15
byte b=010;  //输出8
int c=0xFF;  //输出255
2.3.2 浮点类型
  • float定义小数的时候要在后面加上F或f
  • double可加可不加,平时开发用double,精确度更高,可表示小数16位

image.png

float 精度6-7 、double 精度15-16

浮点型数值采用科学计数法表示:

2E3 等价于 2 * 10 ^ 3(结果:2000.0)

3E5 等价于 3 * 10 ^ 5(结果:300000.0)注意:double为浮点数的默认类型,如需为float类型赋值时,需要在值的后面追加“F”

float pi = 3.1415926F;  //3.1415925  精度缺失
double d1 = 3.1415926;  // 3.1415926
double d2 = 3.1415926E3;    //3141.5926  科学计数法

拓展

double d3 = 1.4;  //转二进制无法精确表示1.4,只能近似存储
double d4 = 0.5;  //转二进制为
double d5 = 0.9;  //近似存储
System.out.println((d3-d4)/d5); //0.9999999999999999

可直接赋值true / false

也可赋值一个结果为true / false的表达式

注意:Java中的boolean不能参与算数运算

double和float主要是做科学计算,科学计算允许一定范围内的误差

但是金融,会计要求不能有误差,采用BigDecimal

2.3.3 布尔类型
类型 所占字节 所占位数 取值范围 描述
boolean 1字节 8位 true\false 仅可描述“真”或者“假”

可直接赋值true / false

也可赋值一个结果为true / false的表达式

注意:Java中的boolean不能参与算数运算

2.3.4 字符类型-3种
类型 所占字节 所占位数 取值范围 字符编码
char 2字节 16位 0~65535 即2^16-1 Unicode字符集(万国码)
char c1 = 97;    //a  整数赋值,通过十进制数65在字符集中对应的字符赋值
char c11 = 65;  //A
char c2 = 'a';   //a  字符赋值,通过''描述为字符赋值
char c3 = '\u4f0D';  //伍  unicode赋值,
char c3 = '\u0041;  //A    unicode赋值,通过十六进制数41在字符集中所对应的字符赋值

前置知识1:

  • ASCII(American Standard Code for Information Interchange)美国信息交换标准码。
  • 基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。
  • ASCII是最通用的信息交换标准,为英文字符设定了统一并且唯一的二进制编码。
  1. 前置知识2:
  • Unicode(万国码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。
  • 它为每种语言中的每个字符设定了统一并且唯一的二进制编码,
  • 以满足跨语言、跨平台进行文本转换、处理的要求,(其中包含了ASCII编码)。
2.3.5 转义字符
转义字符 描述
\n 换行符
\r 回车
\t 缩进(制表位)
\ 反斜线
单引号
‘’ 双引号
public class Demo02 {
    public static void main(String[] args) {
        char e  = '\'';//'
        char e1 = '\\'; // \
        char e2 ='\"';  // "
        char e4 = '"';  // "
        System.out.println(e);
        System.out.println(e1);
        System.out.println(e2);
        System.out.println(e4);
        System.out.println("姓名:张三 \n年龄:22 \n性别:男");   //换行
        // \r表示回车[回到行的最前面]
        System.out.println("12345677\rabc");  //在DOS输出abc45677 (前置并且替换);在idea输出abc
        // \t制表符[表格],内容对齐
        System.out.println("水果\t\t个数\t价格");
        System.out.println("桃子\t\t5个\t30元");
        System.out.println("西番莲\t2个\t15元");  //超过4个字符(英文8个),自动多占一个制表位
        /**
         * 水果   个数  价格
         * 桃子   5个  30元
         * 西番莲  2个  15元
         */
    }
}
2.3.6 引用数据类型
类型 取值范围 字符编码
String 任何” ”之间的字面值 Unicode字符序列
  • 什么是字面值?
  • 在java程序中的数据就是字面值。
  • 在java程序中都有哪些字面值(数据)?
  • 整数型字面值
  • 1 2 3 4 -100 0 …
  • 浮点型字面值
  • 3.0 3.14 3.1415926 …
  • 布尔型字面值(只有两个值)
  • true 真
  • false 假
  • 字符型字面值(单个字符,并且使用单引号括起来的,就是字符)
  • ‘a’
  • ‘b’
  • ‘中’
  • ‘国’
  • 字符串型字面值(凡是使用双引号括起来的,都是字符串)
  • “a”
  • “abc”
  • “hello world,你好世界!”
2.3.7 数据类型转换
  1. 自动类型转换:
    两种类型相互兼容。
    目标类型大于源类型。
  • byte -->short–>int–>long–>float–>double
  • char -->int
  • byte short char 运算时会自动转成int类型
  • 进行算数运算时:
  • 两个操作数有一个为double,计算结果提升为double。
  • 如果操作数中没有double,有一个为float,计算结果提升为float。
  • 如果操作数中没有float,有一个为long,计算结果提升为long。
  • 如果操作数中没有long,有一个为int,计算结果提升为int。
  • 如果操作数中没有int,均为short或byte或char,计算结果仍旧提升为int。
  • 特殊:任何类型与String相加(+)时,实为拼接,其结果自动提升为String。

2.强制类型转换

两种类型相互兼容。

目标类型小于源类型

强制类型转换规则:

  • 整数长度足够,数据完整。

例:int i = 100; byte b = (byte)i; //b = 100

整数长度不够,数据截断。

例:int i = 10000; byte b = (byte)i; //b = 16(符号位变化,可能变为负数)


小数强转整数,数据截断。

例:double d = 2.5; int i = (int)d; //i = 2(小数位舍掉)


boolean的取值为true/false,不可与其他类型转换。

int n = 128;
byte b =(byte)n;
System.out.println(b);  //-128

02 Java基础语法(变量+数据类型+运算符)(下):https://developer.aliyun.com/article/1580152

目录
相关文章
|
6天前
|
Java 程序员 容器
Java中的变量和常量:数据的‘小盒子’和‘铁盒子’有啥不一样?
在Java中,变量是一个可以随时改变的数据容器,类似于一个可以反复打开的小盒子。定义变量时需指定数据类型和名称。例如:`int age = 25;` 表示定义一个整数类型的变量 `age`,初始值为25。 常量则是不可改变的数据容器,类似于一个锁死的铁盒子,定义时使用 `final` 关键字。例如:`final int MAX_SPEED = 120;` 表示定义一个名为 `MAX_SPEED` 的常量,值为120,且不能修改。 变量和常量的主要区别在于变量的数据可以随时修改,而常量的数据一旦确定就不能改变。常量主要用于防止意外修改、提高代码可读性和便于维护。
|
23天前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
本系列教程笔记详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。若需快速学习Kotlin,建议查看“简洁”系列教程。本期重点介绍了Kotlin与Java的共存方式,包括属性、单例对象、默认参数方法、包方法、扩展方法以及内部类和成员的互操作性。通过这些内容,帮助你在项目中更好地结合使用这两种语言。
39 1
|
24天前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
31 2
|
1月前
|
Java 编译器
java“变量 x 可能未被初始化”解决
在Java中,如果编译器检测到变量可能在使用前未被初始化,会报“变量 x 可能未被初始化”的错误。解决方法包括:1. 在声明变量时直接初始化;2. 确保所有可能的执行路径都能对变量进行初始化。
|
14天前
|
Java 编译器
Java重复定义变量详解
这段对话讨论了Java中变量作用域和重复定义的问题。学生提问为何不能重复定义变量导致编译错误,老师通过多个示例解释了编译器如何区分不同作用域内的变量,包括局部变量、成员变量和静态变量,并说明了使用`this`关键字和类名来区分变量的方法。最终,学生理解了编译器在逻辑层面检查变量定义的问题。
Java重复定义变量详解
|
9天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
33 4
|
7天前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
21 1
|
23天前
|
算法 Java 测试技术
🌟Java 零基础 | 详解 单目运算符
【10月更文挑战第14天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
30 7
|
22天前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
24天前
|
Java 测试技术 开发者
🌟Java 零基础 | 深入理解三目运算符
【10月更文挑战第13天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
16 3