JAVA 11.11

article/2025/9/21 9:33:30

JAVA第二天

1.1java中的数据类型(b)

java中的数据类型:  基本数据类型    和   对象类型java是一种强语言,严格遵循类型匹配原则。也就是说 我们存储数据的时候 什么样的数据就必须使用什么样的类型去接收。
​
对象类型: 无数种
基本数据类型:八种
​
public  static void  main(String[] args){
​/* 整型   4个 */byte  a1 = 20;    字节型short a2 = 20;    短整型int   a3 = 30;    整型long  a4 = 60L;   长整型
​/* 浮点型 2个*/float  b1 = 20.5F; 单精度浮点型double b2 = 30.6;  双精度浮点型    精确到小数点后面的位数不一样 
​boolean c1 = true;   布尔类型boolean c2 = false;
​char  d1 = 'a';     字符型char  d2 = '你';char  d3 = 100;
​System.out.println(d3);
​}
​
问题: 我们存储整数 就有四种?我什么时候用哪一种呢?
java语言设计的时候 就希望我们能在功能实现的基础之上尽量的节省内存。所以java就设计了多种数据类型 ,每一种所占据的内存空间和存储的范围是不一样的  
所以java就希望我们存储数据的时候 不同的场景使用不同的数据类型,例如 我们要存储人的年龄  我们可以使用 byte 存储银行卡的余额 double类型所以我们需要记住 各种类型的所占内存和取值范围

 

问题: 一个字节 两个字节是啥概念?
1G = 1024MB   1MB=1024KB   1KB=1024B   1B就是一字节   1B=8b
​
面试题: java中的char类型 能否存储一个汉字?
其他语言中char类型占一个字节,一个汉字占两个字节,但是java中的char类型占俩字节 问题: 一个汉字占2字节,一个字母或者数字占1个字节,char类型能存储2个字节 --- char能否存储两个数字或字母?Too many characters in character literal    
char  d1 = 'aa';
​
​
java中的对象类型:  其中一种是 String  字符串类型

1.2 自动类型转换和强制类型转换(b)

java是遵循类型匹配原则 不一样的类型不能胡乱赋值
int  a = "123";
​
但是public  static void  main(String[] args){
​byte  a = 20;int  b = a;}
此时我们将byte类型的数据赋值给int类型 发现不报错。这是为什么?
此时发生了 自动类型转换:  所占字节数小的 赋值给 所占字节数大的 可以完成赋值。
此时有一张图 记录了 自动类型转换的方向

 

此时如果违背这个图 就会报错
​
public  static void  main(String[] args){int  a = 20;byte  b = a;
}
​
此时我就想将 a的值赋值给 b  此时就需要 强制类型转换。
public  static void  main(String[] args){
​int  a = 20;
​byte  b = (byte) a;
​}
在变量的前面添加一个 () 里面写数据类型  写什么类型代表转换成什么类型  注意:int  a = (int)"123"; 不能转换
此时强制类型转换 就是欺骗个编译器  依然会出现数据溢出的情况   public  static void  main(String[] args){
​int  a = 130;/* -128----127*/byte  b = (byte) a;System.out.println(b);// -126
​
}

1.3 运算结果(b)

​
一目运算符:  ++  --
二目运算符:  + - * / %  += -=   ==  != > < >= <=
三目运算符:  (条件表达式)? (真):(非真)
​
​
a++和++a有什么区别?
​
public  static void  main(String[] args){
​int  a = 10;int  b = a++;int  c = ++a;
​System.out.println(a); // 12    因为无论 a++  还是 ++a 都是对a的值进行自增1 System.out.println(b); // 10    先计算a++ 11  然后将a++之前的值赋值给bSystem.out.println(c); // 12    先计算++a 12  然后将++a之后的值赋值给c
​
}
​
+ 在java中也有两种运算形式: A 数学相加   B 字符串拼接 
​
并且java中的内容 进行运算的时候 结果会 自动提升public  static void  main(String[] args){
​int  a = 10;int  b = 20;
​float  c = a/b;
​//0.0System.out.println(c);
}
​
此时我们需要分布去看代码:  首先计算  a/b 得到的结果是 0.5  ,java中结果也需要数据类型 此时结果的数据类型取决于参与运算的变量并且会选择大的(自动提升)所以结果是int类型
所以就变成了0  然后将0 赋值给 float类型的 c  输出 0.0 public  static void  main(String[] args){
​int  a = 10;float  b = 20;
​float  c = a/b;
​//0.0System.out.println(c);
​}

1.4 隐式转换(b)

我们发现一个问题:写这个代码会报错
​
public  static void  main(String[] args){
​byte  a = 128;float  b = 20.5;
}
Incompatible types.
Required:byte
Found:int
Incompatible types.
Required:float
Found:double  
问题是 found int?  所以就证明一件事情  10 20 30 50 100 200 数字也是有数据类型的  并且是  int 类型20.5  30.6 40.8 小数数字也是有数据类型的  并且是 double 类型此时我们发现 赋值 127的时候 明明是 int给 byte 不能给的但是不报错  因为发生了 隐式类型转换。编译器会发现127在byte范围之内 所以底层会偷偷地帮我们转换public  static void  main(String[] args){byte  a = 20;}
​
所以 float类型的要赋值需要添加F   long类型的要加L
public  static void  main(String[] args){float  a =  20.5F;long  b = 99999999999999L;
}
​请问以下代码会有什么问题?short  a = 20;  // 20是int类型 但是在short范围之内 所以隐式转换a = a+5; // 先计算 a+5; 得到结果25 自动提升为int类型 所以将int类型的25 赋值给 short类型的 a 报错short  b = 30;b += 6;  // b+=6 在底层编译成字节码文件的时候 是  b =  (short)( b+6 );
​
​
请问以下代码会有问题吗?public  static void  main(String[] args){
​short  b = 30;byte   a = 60;
​short  c = a+b;
​} 
此时这个代码报错  Incompatible types. Required:short  Found:int    
提高了性能但是浪费了内存。所以这是JDK后来才有的操作,因为大家的电脑内存都变大了 没必要纠结那一个两个字节了  

1.5 流程控制

if  if-else   for  while  switch

1.6 局部变量作用域(b)

public class Haha {
​/** 成员变量  字段  属性   全局变量  */int  b = 30;
​
​public static void main(String[] args) {/*定义到函数内部的变量*/int  a = 20;
​}
}
​
局部变量的作用域 指的是 定义的局部变量在哪可以使用: 从定义开始 到所在的结束大括号public static void main(String[] args) {
​
​for (int i=0;i<666;i++){
​}
​for (int i=0;i<666;i++){
​}
​}
​
同一作用域内 不能重复定义变量名
public static void main(String[] args) {
​int  a = 20;
​//Variable 'a' is already defined in the scopeint  a = 30;
}

1.7 输出路径

src 用来写源文件
out 用来存放编译后的字节码文件


http://chatgpt.dhexx.cn/article/lorBmDT9.shtml

相关文章

怎么从 Java8 升到 Java11?

把一个项目从 Java 8 迁移到 Java 11&#xff0c;我该怎么办呢&#xff1f; 最简单的办法&#xff0c;当然是直接强行升级&#xff0c;遇到一个错就改一个错&#xff0c;别看它 low&#xff0c;但是对于一个小型且非核心的项目来说&#xff0c;已经足够了。 当然&#xff0c;…

Java 11~~20

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言Day11——顺序表&#xff08;一&#xff09;顺序表是什么&#xff1f;Java复习&#xff1a;重写与重载1.重写(Override)2.重载&#xff08;Overloading&#xf…

官网下载JAVA的JDK11版本(下载、安装、配置环境变量)

目录 前言必读&#xff1a; 一、下载JDK11 1.先去浏览器搜索 2.选择Products 3.Java 4.往下滑找到Oracle JDK,然后点击 5.往下滑找到Java11&#xff0c;再选择自己的操作系统 6.选择exe这个直接安装的后缀 7.跳出来的弹窗勾选&#xff0c;并点击 8.弹出来一个甲骨文…

Java11安装与配置环境变量保姆级教程

话不多说&#xff0c;我们以java11为例在windows10_X64系统中进行安装 java11下载地址&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/fdf31b287749 提取码&#xff1a;2NNy 安装Java 直接下一步装就完事了 关闭 配置环境变量 找到jdk文件的路径&#xff1b;如图将路…

Java JDK11的下载与安装

前言 本篇文章是基于win10系统下载安装JDK11的教程。 1.下载Oracle JDK 进入Oracle 官网&#xff1a;https://www.oracle.com/java/technologies/downloads/#java11 选择Java11→Winodws→ .exe版本下载 点击下载之后&#xff0c;可能会出现登录界面&#xff0c;输入Oracle…

运用netty框架实现自定义协议并运用于简易聊天

1.什么是netty Netty 是由 JBOSS 提供的一个 Java 开源框架。Netty 提供异步的、基于事件驱动的网络应用程序框架&#xff0c;用以快速开发高性能、高可靠性的网络 IO 程序,是目前最流行的 NIO 框架&#xff0c;Netty 在互联网领域、大数据分布式计算领域、游戏行业、通信行业等…

netty框架的学习

netty框架的学习 1.netty环境的搭建2.netty的特点2.1什么是netty2.2为什么要使用netty3.netty框架的搭建3.1创建一个maven项目3.2导入依赖3.3搭建框架 之前几天的话开始稍微熟悉了一点maven和Springboot框架&#xff0c;从今天开始要正式的开始学习netty框架了。 1.netty环境的…

Netty框架之责任链模式及其应用

Netty框架之概述及基本组件介绍 Reactor网络编程模型解析 前言 在上篇博客介绍完netty框架的基本组件介绍和概述&#xff0c;也跟着代码看了下NioEventLoopGroup的启动过程&#xff0c;以及基于Reactor线程模型的解析&#xff0c;它是开发Netty的核心思想&#xff0c;也是整…

【初识Netty使用Netty实现简单的客户端与服务端的通信操作Netty框架中一些重要的类以及方法的解析】

一.Netty是什么&#xff1f; Netty 由 Trustin Lee(韩国&#xff0c;Line 公司)2004 年开发 本质&#xff1a;网络应用程序框架 实现&#xff1a;异步、事件驱动 特性&#xff1a;高性能、可维护、快速开发 用途&#xff1a;开发服务器和客户端 Netty的性能很高&#xff0…

Netty框架实现TCP/IP通信

项目中需要使用到TCP/IP协议完成数据的发送与接收。如果只是用以前写的简单的socket套接字方法&#xff0c;每次接收发送消息都会创建新的socket再关闭socket&#xff0c;造成资源浪费。于是使用netty框架完成java网络通信。 Netty框架的内容很多&#xff0c;这里只是代码…

在SpringBoot中整合使用Netty框架

Netty是一个非常优秀的Socket框架。如果需要在SpringBoot开发的app中&#xff0c;提供Socket服务&#xff0c;那么Netty是不错的选择。 Netty与SpringBoot的整合&#xff0c;我想无非就是要整合几个地方 让netty跟springboot生命周期保持一致&#xff0c;同生共死让netty能用…

Netty框架介绍及实战

Netty框架模型 NIO 的类库和API繁杂&#xff0c;使用麻烦&#xff1a;需要熟练掌握Selector、ServerSocket、ChannelSocketChannel、 ByteBuffer等。开发工作量和难度都非常大&#xff1a; 例如客户端面临断连重连、 网络闪断、心跳处理、半包读写、 网络拥塞和异常流的处理等…

Netty框架使用

前言 首先在使用Netty框架的时候需要了解Netty是一个什么东西。 Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具&#xff0c;用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说&#xff0c;Netty 是一个基于NIO的…

Netty框架简介

Netty框架介绍 早已听说Netty牛逼了&#xff0c;最近有时间学习学习&#xff0c;官网地址&#xff1a;https://netty.io/&#xff0c;Java系的多种服务器/大数据框架&#xff0c;都离不开Netty做出的贡献&#xff0c;例如dubbo&#xff0c;elasticsearch等等&#xff0c;采用的…

netty框架android,隻需五步,即可基於Netty框架實現Android內網推送功能。

隻需五步,即可基於Netty框架實現Android內網推送功能。 一、先引入依賴,客戶端和服務端用的都是同一個依賴netty-all。 Android Studio中Gradle配置: compile io.netty:netty-all:5.0.0.Alpha2 IDEA中Maven配置: io.netty netty-all 5.0.0.Alpha2 二、創建消息模塊包。 目前…

Netty框架之Selector轮询器

Selector的原理详解 1.传统多线程网络通信的服务器设计2.线程池版网络通信的服务器设计Selector版网络通信的服务器设计 说到Selector的作用&#xff0c;我们不得不引入 多线程网络通信的设计 1.传统多线程网络通信的服务器设计 服务器每建立一个客户端连接Socket&#xff0c;…

netty框架学习及springboot整合集成

netty框架学习及springboot整合集成 1. Netty基本概念2. Netty框架2.1 Netty框架结构2.1 Netty NIO2.2 Reactor线程模型 3. Springboot集成netty3.1 引入jar包依赖3.2 服务端3.3 客户端 4. 参考资料 从很久以前就接触到netty&#xff0c;也在几个项目中使用netty进行网络通讯对…

Netty框架介绍

Netty框架介绍 一、netty&#xff08;通讯框架&#xff09;介紹 1、什么是netty Netty是一个基于Java NIO类库的异步通讯框架&#xff0c;他的架构特点是&#xff1a;异步非阻塞、基于事件驱动、高性能、高可靠和高定制行。 2、netty应用场景 rpc远程调用框架dubbo底层就是通…

Netty框架简述

Netty是什么&#xff1f; Netty 是一个广泛使用的 Java 网络编程框架&#xff0c;Netty提供异步的、事件驱动的网络应用程序框架和工具&#xff0c;用以快速开发高性能、高可靠性的网络服务器和客户端程序。Netty 的内部实现时很复杂的&#xff0c;但是 Netty 提供了简单易用的…