从0开始学Java:Java基础语法(2)

简介: 从0开始学Java:Java基础语法(2)

6. 变量(Variable

  • 变量的概念:
    在程序执行的过程中,其值可以发生改变的量
  • 变量的作用:
    用来存储数据,代表内存的一块存储区域,这块内存中的值是可以改变的
  • 微信截图_20231016215421.png
  • 定义格式:
  1. 声明变量,并同时赋值
    数据类型 变量名=初始化值;
//声明并同时赋值,存储一个整数的年龄
int age = 18;
//打印输出变量值
//+号表示连接符,把""中的字符串与变量age中的数据连接进行输出
System.out.println("age = " + age);

先声明,再赋值

数据类型 变量名;

变量名=初始值;

//先声明,再赋值
int age;
age=18;
//打印输出变量值
System.out.println("age = " + age);//18
//变量可以重新赋值
age=19;
System.out.println("age = " + age);//19 

同时声明多个变量

数据类型 变量名1=初始值,变量名2=初始值;

//声明多个变量并同时赋值
int a=11,b=22;
//或者先声明再赋值
int c,d;
c=33;
d=44;

变量的使用注意事项


先声明后使用


如果没有声明,会报“找不到符号”错误


在使用之前必须初始化


如果没有初始化,会报“未初始化”错误


变量有作用域


作用域为变量直接所属的{}范围内,如果超过作用域,也会报“找不到符号”错误


在同一个作用域中不能重名


同一个{},不能同时声明两个同名变量



7. 计算机如何存储数据

计算机世界中只有二进制。那么在计算机中存储和运算的所有数据都要转为二进制。包括数字、字符、图片、声音、视频等。


7.1 进制

进制分类与表示方式


(1)十进制:

数字组成:0-9

进位规则:逢十进一

System.out.println(10);//10表示十进制的10,输出十进制结果10

(2)二进制:

数字组成:0-1

进位规则:逢二进一

表示方式:以0b或0B开头

System.out.println(0B10);//0B10表示二进制的10,输出十进制结果2

十进制的256,二进制:100000000,为了缩短二进制的表示,又要贴近二进制,在程序中引入八进制和十六进制

(3)八进制:很少使用

数字组成:0-7

进位规则:逢八进一

表示方式:以0开头

System.out.println(010);//010表示八进制的10,输出十进制结果8

与二进制换算规则:每三位二进制是一位八进制值

(4)十六进制

数字组成:0-9,a-f或A-F

进位规则:逢十六进一

表示方式:以0x或0X开头

System.out.println(0X10);//0x10表示十六进制的10,输出十进制结果16

  1. 与二进制换算规则:每四位二进制是一位十六进制值
  2. 进制的转换

微信截图_20231016215742.png

微信截图_20231016215751.png

任意进制转十进制


十进制的本质:123=1*102+2*101+3*10^0


系数:就是每一个位上的数值。上例中的1,2,3

基数:x进制的基数就是x。上例中的10

权:对每一个位上的数据,从右到左,并且从0开始编号,对应的编号就是该数据的权。上例中的0,1,2


任意进制转十进制:系数*基数^权次幂之和。


十进制转任意进制:


十进制数除以基数取余,直到商为0,余数反转。


十进制转二进制:十进制整数6除以基数2,倒序取余数,结果为二进制数110

微信截图_20231016215806.png

7.2 计算机存储单位

位(bit) 是数据存储的最小单位,也就是一个二进制位。其中8 bit 就称为1个字节(Byte)。

字节(Byte): 是计算机信息技术用于计量存储容量的一种计量单位,1字节等于8bit。

转换关系:

8 bit = 1 Byte

1024 Byte = 1 KB

1024 KB = 1 MB

1024 MB = 1 GB

1024 GB = 1 TB

7.3 二进制数据存储

计算机底层都是使用二进制进行数据的存储的。不同类型的数据,存储方式也有不同。


整数存储

计算机底层存储整数并不是把整数转换为二进制直接存储,而是以二进制的补码形式进行存储。要了解补码还要知道原码和反码:


原码:把十进制转为二进制,然后最高位设置为符号位,1表示负数,0表示正数。


正整数的原码、反码和补码都一样,称为三码合一。


负整数的反码和补码表示为:


反码:负整数的反码在其原码的基础上,符号位不变,其余位取反(0变1,1变0)


补码:负整数的补码为其反码基础上+1

例如:用1个字节的二进制表示一个数
25 ==> 原码  0001 1001 ==> 反码  0001 1001 -->补码  0001 1001
-25 ==>原码  1001 1001 ==> 反码  1110 0110 ==>补码  1110 0111

一个字节可以存储的整数范围

分为两种情况:

(1)无符号:不考虑正负数

0000 0000 ~ 1111 1111 ==> 0~255

(2)有符号:-128~127

0000 0000 ~ 0111 1111 ==> 0~127
1000 0001 ~ 1111 1111 ==> -127 ~ -1 (补码形式存储)
1000 0000  ==> -128     特殊值,最高位既是符号位,又是数值位

如何存储小数(了解)


为什么float(4个字节)比long(8个字节)的存储范围大?

为什么double(8个字节)比float(4个字节)精度范围大?

为什么float和double不精确

因为float、double底层也是二进制,先把小数转为二进制,然后把二进制表示为科学记数法,然后只保存:


①符号位②指数位③尾数位


微信截图_20231016215936.png

详见《float型和double型数据的存储方式.docx

  1. 如何存储字符在计算机的内部都是二进制的0、1数据,如何让计算机可以直接识别人类文字的问题呢?就产生出了编码表的概念。
  • 编码表
    就是将人类的文字和一个十进制数进行对应起来组成一张表格。例如:
  • 微信截图_20231016215947.png
  • 将所有的英文字母,数字,符号都和十进制进行了对应,因此产生了世界上第一张编码表ASCII(American Standard Code for Information Interchange 美国标准信息交换码)。


Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。


Java中使用的字符集:Unicode编码集


unicode使用2个字节存储一个字符,对于大量的英文字符(1个字节可以存储),无疑是浪费空间的,所以出现了UTF-8、UTF-16编码规则,UTF-8是以8位为一个编码单位的可变长编码规则。这时:


英文字符:还是按照ASCII码表对应的数字进行存储(1个字节)


中文字符:通常需要3个字节来存储


Java中字符常量的几种表示方式


(1)‘一个字符’


例如:‘A’,‘0’,‘我’


(2)转义字符

\n:换行
\r:回车
\t:Tab键
\\:\
\":"
\':'
\b:删除键Backspace
System.out.println('\\');
System.out.println("hello\tworld\njava");

(3)\u字符的Unicode编码值的十六进制型

例如:’\u5C1A’代表’尚’

char c = '\u5C1A';
char c = '尚';
String s = '尚';//错误的,哪怕是一个字符,也要使用双引号
char c2 = '';//错误,单引号中有且只能有一个字符
String s2 = "";//可以,双引号中可以没有其他字符,表示是空字符串

(4)直接给char类型变量赋值十进制的0~65535之间的Unicode编码值



8. 数据类型

8.1 数据类型分类

Java是一种强类型的语言,针对每一种数据都定义了数据类型,不同类型的数据二进制表示方式或分配的空间大小有所不同,java数据类型主要分为两大类:(定义变量需要确定数据类型,即确定数据使用的空间大小和二进制表示形式)


基本数据类型:包括 整数、浮点数、字符、布尔。

引用数据类型:包括 类、数组、接口等。

8.2 基本数据类型

四类八种基本数据类型:

微信截图_20231016220103.png

Java中的默认类型:整数类型是int 、浮点类型是double 。


常量整数值都是int类型,占用4个字节空间。

程序运行期间byte、short、char、boolean实际都是占用4个字节内存空间,

但在逻辑上:

byte只有低8位有效空间。

short只有低16位有效空间。

所以,可以直接把一个byte范围内的整数常量值直接赋给byte类型变量。short同理。byte b=10;

赋值给int,只要在int范围即可。

赋值给long,在int范围内的,可以加也可以不用加L,会自动升级为long,如果数字超过int范围,必须加L。


小数常量值,无论多少,不加F,就是double类型。


8.3 基本数据类型的存储范围

整型系列

(1)byte:字节类型


占内存:1个字节


存储范围:-128~127

byte b=10;
byte b1=128//编译失败: 不兼容的类型: 从int转换到byte可能会有损失

(2)short:短整型类型

占内存:2个字节

存储范围:-32768~32767

short s=10;
short s1=32768//编译失败: 不兼容的类型: 从int转换到short可能会有损失

(3)int:整型

占内存:4个字节

存储范围:-2的31次方 ~ 2的31次方-1

int i=10;
int i1=12345678900;//编译错误: 过大的整数: 12345678900

(4)long:整型

占内存:8个字节

存储范围:-2的63次方 ~ 2的63次方-1

long j=10;
long j1=12345678900L;

注意:如果要表示某个超过int范围的常量整数它是long类型,那么需要在数字后面加L


浮点型系列(小数)

(1)float:单精度浮点型


占内存:4个字节


精度:科学记数法的小数点后6~7位


注意:如果要表示某个常量小数是float类型,那么需要在数字后面加F或f,否则就是double类型


(2)double:双精度浮点型


占内存:8个字节


精度:科学记数法的小数点后15~16位

float f = 12.3F;//右边如果赋值小数常量值,那么必须加F或f
double d = 12.3;    
单字符类型:char

占内存:2个字节

char ch='a';

char类型:使用单引号’'


布尔类型

boolean:只能存储true或false


虽然计算机底层使用0和1表示false和true,但是在代码中不能给boolean类型的变量赋值0和1,只能赋值false和true



9. 基本数据类型转换

在Java程序中,不同的基本数据类型的值经常需要进行相互转换。Java语言所提供的七种数值类型之间可以相互转换,基本数据类型转换有两种转换方式:自动类型转换和强制类型转换。

微信截图_20231016220309.png

相关文章
|
1月前
|
存储 Java 容器
Java基本语法详解
本文深入讲解了Java编程的基础语法,涵盖数据类型、运算符、控制结构及数组等核心内容,帮助初学者构建坚实的编程基础。
|
2月前
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
117 2
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
6月前
|
Java 开发者
重学Java基础篇—Java类加载顺序深度解析
本文全面解析Java类的生命周期与加载顺序,涵盖从加载到卸载的七个阶段,并深入探讨初始化阶段的执行规则。通过单类、继承体系的实例分析,明确静态与实例初始化的顺序。同时,列举六种触发初始化的场景及特殊场景处理(如接口初始化)。提供类加载完整流程图与记忆口诀,助于理解复杂初始化逻辑。此外,针对空指针异常等问题提出排查方案,并给出最佳实践建议,帮助开发者优化程序设计、定位BUG及理解框架机制。最后扩展讲解类加载器层次与双亲委派机制,为深入研究奠定基础。
228 0
|
30天前
|
算法 Java 测试技术
零基础学 Java: 从语法入门到企业级项目实战的详细学习路线解析
本文为零基础学习者提供完整的Java学习路线,涵盖语法基础、面向对象编程、数据结构与算法、多线程、JVM原理、Spring框架、Spring Boot及项目实战,助你从入门到进阶,系统掌握Java编程技能,提升实战开发能力。
84 0
|
2月前
|
存储 Java 程序员
Java 基础知识点全面梳理包含核心要点及难点解析 Java 基础知识点
本文档系统梳理了Java基础知识点,涵盖核心特性、语法基础、面向对象编程、数组字符串、集合框架、异常处理及应用实例,帮助初学者全面掌握Java入门知识,提升编程实践能力。附示例代码下载链接。
111 0
|
4月前
|
IDE Java 开发工具
【Java基础-环境搭建-创建项目】IntelliJ IDEA创建Java项目的详细步骤
IntelliJ IDEA创建Java项目的图文详细步骤,手把手带你创建Java项目
659 10
【Java基础-环境搭建-创建项目】IntelliJ IDEA创建Java项目的详细步骤
|
3月前
|
存储 安全 Java
2025 年最新 40 个 Java 基础核心知识点全面梳理一文掌握 Java 基础关键概念
本文系统梳理了Java编程的40个核心知识点,涵盖基础语法、面向对象、集合框架、异常处理、多线程、IO流、反射机制等关键领域。重点包括:JVM运行原理、基本数据类型、封装/继承/多态三大特性、集合类对比(ArrayList vs LinkedList、HashMap vs TreeMap)、异常分类及处理方式、线程创建与同步机制、IO流体系结构以及反射的应用场景。这些基础知识是Java开发的根基,掌握后能为后续框架学习和项目开发奠定坚实基础。文中还提供了代码资源获取方式,方便读者进一步实践学习。
759 2
|
2月前
|
存储 安全 Java
从基础语法到实战应用的 Java 入门必备知识全解析
本文介绍了Java入门必备知识,涵盖开发环境搭建、基础语法、面向对象编程、集合框架、异常处理、多线程和IO流等内容,结合实例帮助新手快速掌握Java核心概念与应用技巧。
62 0
|
3月前
|
存储 安全 Java
Java 基础知识面试题汇总 最全面的 Java 基础面试题整理
本文全面解析Java基础知识面试题,涵盖Java基础概念、面向对象编程、异常处理、集合框架等核心内容。通过实际应用场景,提供技术方案与应用实例,如JDK与JRE区别、==与equals()差异、String类特性、final与static关键字用法、多继承替代方案及接口与抽象类对比。帮助开发者夯实基础,高效备考,提升实战能力。附带完整代码示例,可供下载学习。
516 3
|
6月前
|
缓存 安全 Java
java面试-基础语法与面向对象
本文介绍了 Java 编程中的几个核心概念。首先,详细区分了方法重载与重写的定义、发生阶段及规则;其次,分析了 `==` 与 `equals` 的区别,强调了基本类型和引用类型的比较方式;接着,对比了 `String`、`StringBuilder` 和 `StringBuffer` 的特性,包括线程安全性和性能差异;最后,讲解了 Java 异常机制,包括自定义异常的实现以及常见非检查异常的类型。这些内容对理解 Java 面向对象编程和实际开发问题解决具有重要意义。

热门文章

最新文章