Java基础巩固001

Java

Java可移植性

Hello.java(源代码) ===》 编译 ===》 Hello.class(字节码) ===》解释 ===》 01101100...

Java进行程序解释执行的虚拟机是由硬件和软件技术模拟出来的产品。

JVM(Java Virtual Machine)是一台模拟的电脑,可以执行字节码程序,根据不同的系统找到不同支持的虚拟机,由虚拟机来适配不同的字节码体系。

Java下载

  • JDK1.0: 1995年5月23日对外公布,直到1996年的时候才提供下载,标志着Java彻底问世;
  • JDK1.2: 1998年的时候退出的,这个版本将Java更名为了Java2;
  • JDK1.5: 2005年Java十周年大会上发布;
  • JDK1.8: 2014年在Java中引入了函数式编程的概念;
  • JDK1.9~JDK1.xx: 2017年以后,推出的JDK1.9(以后每半年推出一次更新的版本)

Java开发具体内容

程序注释

任何一套程序代码里面实际上是由大量的程序逻辑组成,但如果想要对一套代码进行长期的维护,需要编写大量的注释。
Java中注释的三种形式:

  1. 单行注释: // ...
  2. 多行注释: /.../
  3. 文档注释: /**...文档注释的特定语法标记进行编写*/

标识符和关键字

命令要求: 字母、数字、下划线(_)以及"$"所组成,其中不能使用数字开头,不能够使用Java关键字(保留字)来定义。

Java数据类型

任何的程序设计语言本身就属于一场数字的游戏。
两大类型:
1. 基本数据类型: 所有的数据操作都是采用值传递,相当于把数据给了对方一个副本信息,副本信息的修改不影响原始的数据内容,这些基本数据类型也是构成程序开发的基本环节;
-整型: byte、short、int、long;(默认值 0)
-浮点型:float、double;(默认值 0.0)
-字符型:char;(默认值 '\u0000')
-布尔型:boolean;(默认值 false)
2. 引用数据类型: 对内存的操作
- 数组、类、接口(默认值 null)
在Java开发之中,对于基本数据类型(最为核心的数据类型)默认一共8种类型;

变量与常量

变量和常量是在整个程序计算过程之中主要使用的两个数据的存储形式,其中所给定的不可能修改的内容就将其称为常量,而所有可以修改的内容就将其称为变量。

整型

整型描述是没有小数点内容,是一个完整的十进制的数值,四种数据类型支持: byte(10%)、short(0.1%)、int(79.9%)、long(10%)
byte:主要用于网络传输、二进制数据处理、编码转换; int:描述大部分的整型数值;long:主要描述文件大小或日期时间的数字

  • 观察int(-2147483647 ~ -2147483648)的数据溢出问题
public class MainClass {
public static void main(String args[]) {
int numA = 2147483647; // int的最大值
System.out.println(numA + 1); // -2147483648 int的最大值 + 1 = int的最小值
System.out.println(numA + 2); // -2147483647
int numB = -2147483648; // int的最小值
System.out.println(numB - 1); // 2147483647 int的最小值 - 1 = int的最大值
System.out.println(numB - 2); // 2147483646
}
}

Java之中int的数据类型共32位,第一位是符号位,其余数属于数据位。每一次进行加或减的时候实际上都是在底层进行二进制的数据计算,当最大值的时候"011111",如果在进行+1的处理,则符号位就会发生改变称为最小值

解决数据溢出 ===》 扩大数据范围使用 long(自动转型: int + long = long)

  • 通过long的自动转型解决int溢出问题
int numA = 2147483647; // int的最大值
System.out.println(numA + 1L); // 2147483648
int numB = -2147483648; // int的最小值
System.out.println(numB - 1L); // -2147483649

数据类型转换

  • 自动类型转换: 小范围数据类型自动转换为大范围数据类型(穷人很愿意成为富人)
  • 强制类型转换: 大范围数据类型强制转换为小范围数据类型(富人不愿意成为穷人)

一般不建议使用强制的类型转换,因为可能会有数据溢出的问题(强扭的瓜🥒不甜)

byte(-128~127

Java针对于符合byte范围的int常量则进行优化处理不进行强制类型转换,如果不在此范围必须强制转换处理

浮点型

浮点型最大特点: 在数字里面包含小数点。

  • 单精度浮点类型:float(32bit):包含32位的数据长度;
  • 双精度浮点类型:double(64bit): 包含64位的数据长度;
    在Java里面,任何的一个小数其默认的数据类型均为double(double可以保存全宇宙里面最大的一个数值),double是整个数据类型之中可以保存数据范围最大的一种类型。

Java之所以没有使用float作为小数的默认类型,主要考虑到float计算本身存在的二进制位的操作问题(会产生精度问题)。

  • 定义float类型的变量
public class MainClass {
public static void main(String args[]) {
float num_a = 10.0F; //将double常量强制转为float变量
float num_b = (float)0.4; //将double常量强制转换为float变量
// 总之float类型的变量值是不能直接给的
System.out.println(num_a / num_b); // 25.0
}
}

在整个程序的执行过程之中,使用float需要进行变量的强制转换。float数据类型本身是有问题的,所以在实际开发之中,不建议使用float这种数据类型进行浮点数的定义而是使用double(首选double)

  • 如何实现准确的数据除法
public class MainClass {
public static void main(String args[]) {
int num_a = 9;
int num_b = 2;
System.out.println(9 / 2); // 4
System.out.println(9 / 2 * 1.0); // 4.0
System.out.println(9 * 1.0 / 2 ); // 4.5 ✔
System.out.println(9 / (double)2); // 4.5 🍎 【推荐使用】
System.out.println((double)9 / 2); // 4.5 🍎 【推荐使用】
// 先将9*1.0转换成double类型在进行整除操作则会保存准确的小数位
}
}

使用规则: 整型 -> int 浮点型 -> double

字符型

在程序之中字符型(char) 和 整型(int)直接进行转换处理

public class MainClass {
public static void main(String args[]) {
char c = 'a'; // 字符要用单引号生命
int num = c; // 字符型数据将直接转换为整型数据(不需要强制转换)
System.out.println(num); // 97
}
}

a:97 A:65 0:48

布尔类型

布尔型是一种描述处理结构的逻辑内容,Java中使用boolean关键字来进行定义,只存在两个内容: false、true
Java中布尔类型不会和其他任何类型的数据进行转型

String字符串

Java之中字符串属于一种特殊的数据形式,是一种引用数据类型,字符串的类型需要“String”进行声明

var关键字

Java本身属于静态的编程语言,在进行各个变量定义的时候就必须明确的声明变量的类型以及变量的具体内容
var关键字主要用于变量的定义根据输入的值自动推断当前值的数据类型

运算符概述

  • 赋值运算符: 变量 = 内容(数据) 、 变量 = 其他变量
  • 数学运算符: +、-、*、/
int number = 3; // 定义变量
int numA = 0;
int numB = 0;
numA = numA + number; // 这里存在两个运算符
numB += number; // 这里存在一个运算符, 此种模式会更少的占用内存空间

+=、-=、*=、=、%=

自增与自减运算符

  • num++ : 先使用变量值后再自增

  • ++num : 先自增后再使用变量值

  • num-- : 先使用变量值后再自减

  • --num : 先自减后再使用变量值

关系运算符

大于(>) 大于等于(>=) 小于(<) 小于等于(<=) 不等于(!=) 等于(==)
单等于号(=)是赋值运算 双等于(关系运算)

boolean类型只能用在 不等于(!=)和等于(==)这两个运算符

逻辑运算符

  • 与(若干个判断条件同时为true,最终运算结果才是true)
    普通与(&) 所有条件表达式全部判断
    短路与(&&) 当前条件表达式为false则后续条件表达式不再判断直接返回false
public class TestDemo{
public static void main(String args[]){
System.out.println((1 > 2) & (10 / 0 == 0)); // Exception in thread "main" java.lang.ArithmeticException: / by zero
System.out.println((1 > 2) && (10 / 0 == 0)); // false
}
}
  • 或(若干个判断条件只要有一个为true,最终运算结果就是true)
    普通或(|) 所有条件表达式全部判断
    短路或(||) 当前条件表达式为true则后续条件表达式不再判断直接返回true
public class TestDemo{
public static void main(String args[]){
System.out.println((2 > 1) | (10 / 0 == 0)); // Exception in thread "main" java.lang.ArithmeticException: / by zero
System.out.println((2 > 1) || (10 / 0 == 0)); // true
}
}
  • 非(true -> false, false -> true)

**重要结论: ** 开发之中考虑性能的问题,一定要使用短路与和短路或进行条件判断。🍎

位操作符

posted @   Felix_Openmind  阅读(69)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
*{cursor: url(https://files-cdn.cnblogs.com/files/morango/fish-cursor.ico),auto;}
点击右上角即可分享
微信分享提示