java基础2(黑马)

一、变量里的数据在计算机中的存储原理

1.二进制

.二进制:只有0、1, 按照逢二进一的方式表示数据。

十进制数字11转换为:1011

方法:除二取余法

计算机中表示数据的最小单元,一个字节(Byte,简称B,是使用8个二进制位组成的),字节,是8位一组。

字节中的每一个二进制位就称为位(bit,简称b),1B=8b。

2.字符

字符在计算机中的存储是通过把字符变成编号,把字符编号的二进制保存起来

ASCII编码表:即美国信息交换标准码,规定了现代英语、数字字符、和其他西欧字符对应的数字编号。

package cn.chang.variable;
public class ASCIIDemo1 {    public static void main(String[] args) {// 目标:掌握ASCII编码表的编码特点System.out.println('a' + 10);    // 97 + 10 = 107       System.out.println('A' + 10);    // 65 + 10 = 75System.out.println('0' + 10);    // 48 + 10 = 58 }}

字符A对应的是65;

字符a对应的是97;

数字0对应的是48;

2.进制转换

二进制转十进制:

八进制和十六进制:

为了便于观察和表示二进制,推出了八进制和十六进制。

97:0110 0001

八进制:二进制每三位一组,就是八进制。 

97,八进制就是141。

000 -> 0

111 -> 7

公共是8个数据。

十六进制:依次用0~9,A、B、C、D、E、F来表示。二进制每四位一组。

250:1111 1010   十六进制:FA

注意:

Java程序中支持书写二进制、八进制和十六进制的数据,分别需要以0B或0b、0、0X或0x开头。

例:

package cn.chang.variable;
public class ASCIIDemo1 {public static void main(String[] args) { // 目标:掌握ASCII编码表的编码特点int a1 = 0B01100001;      // 97的二进制System.out.println(a1);int a2 = 0141;            // 97的八进制System.out.println(a2);int a3 = 0XFA;            // 250的十六进制System.out.println(a3);}}

3.单位

计算机的数据单位:

1)计算机表示数据的最小单位是:字节,1B=8b;

2)在B的基础上,计算机发展出了KB、MB、GB、TB、……这些数据单位。

1B = 8b

1KB = 1024B

1MB = 1024KB

1GB = 1024MB

1TB = 1024GB

二、数据类型

数据类型的分类:基本数据类型和引用数据类型

在Java中,有8种基本数据类型来存储数值、字符和布尔值。

1.基础数据类型

4大类:整形、浮点型、字符串、布尔型

注:

1. long型的取值范围比int型大,所以在赋值的时候要和int型做区分,需要在整数后面加L或者l。

2.在默认情况下,小数都被看成是double型,若想使用float型声明小数,则需要在小数后面添加F或f。

2.引用数据类型

String称之为字符串类型,定义的变量可以用于记住一个字符串数据。

package cn.chang.variable;
public class VariableDemo2 {    public static void main(String[] args) {// 目标: 引用数据类型// 5. StringString name = "张三";System.out.println(name);}
}

三、类型转换

1.自动类型转换

类型范围小的变量,可以直接赋值给类型范围大的变量

例:byte类型的变量可以直接赋值给int类型的变量

package cn.chang.type;
public class TypeConversionDemo1 {public static void main(String[] args) {// 目标:理解自动类型转换机制byte a = 12;int b = a;      // 发生了自动类型转换 System.out.println(a); System.out.println(b);}
}

自动类型转换的其他形式:

2.表达式的自动类型转换

在表达式中,小范围类型的变量,会自动转换成成表达式较大范围的类型,再参与运算。

注意事项:

表达式的最终结果类型是由表达式中的最高类型决定。

在表达式中,byte、short、char是直接转换成int类型参与运算的。

package cn.chang.type;
public class TypeConversionDemo2 {public static void main(String[] args) { // 目标:掌握表达式的自动类型转换机制byte a = 10;int b = 20;long c = 30;long res1 = a + b + c;               // 表达式的最高类型是long类型System.out.println(res1);double res2 = a + b + 1.0;            // 表达式中的最高类型是double类型System.out.println(res2);byte i = 10;short j = 30;int res3 = i + j;         // 表达式中,byte、short、char是直接转换成int类型参与运算的。        System.out.println(res3);byte ii = 10;byte jj = 80;int res4 = ii + jj;       // 表达式中,byte、short、char是直接转换成int类型参与运算的。        System.out.println(res4);}
}

3.强制类型转换:

大范围类型的变量赋值给小范围类型的变量

package cn.chang.type;
public class TypeConversionDemo3 {    public static void main(String[] args) {        // 目标:强制类型转换,显示转换int a = 1500;byte b  = (byte) a;     // Alt + Enter回车键 选择菜单第一项,强制类型转换        System.out.println(b);}
}

类型范围大的数据赋值给范围小的数据,IDEA会出现报错。

原因:可能会导致精度缺失

注意事项:

1)强制类型转换可能造成数据丢失溢出,精度丢失。

2)浮点型转换成整型,直接丢掉小数部分,保留整数部分返回。

四、运算符

1.基本算术运算符

注:

在Java中,两个整数相除结果还是整数。

“+”符号与字符串运算的时候是用作连接符的,其结果依然是一个字符串

2.自增自减运算符

注意:

++、-- 只能操作变量、不能操作字面量

package cn.chang.operator;
public class OperatorDemo2 {public static void main(String[] args) {// 目标:掌握变量自增自减运算符的使用int a = 10;a++;        // a = a + 1++a;System.out.println(a);int b = 10;b--;       // b = b - 1--b;System.out.println(b);}
}

自增自减的使用注意事项:

++、--如果非单独使用(如在表达式中,或者同时有其他操作),放在变量前后会存在明显区别。

1)放在变量前面,先对变量进行+1、-1,再拿变量的值进行运算

b=++a;  -> a = a + 1; b =a ;

2)放在变量的后面,先对变量的值进行运算,然后再对变量进行+1,-1;

b = a++; -> b = a; a = a + 1;

3.赋值运算符

基础赋值运算符就是“=”,从右往左看。

int a = 10;     // 把数字10赋值给左边的变量a存储。

扩展赋值运算符:

4.关系运算符

判断数据是否满足条件,最终会返回一个判断的结果,这个结果是布尔类型的值,true或false。

在Java中,判断是否相等,一定是“==”,千万不要把==写成“=”,写成“=”,就是赋值了

5.逻辑运算符

结论:

1)在Java中,“&”,“|”:无论左边是true或者false,右边都要执行

2)由于&&、||运算效率更高,在开发中用的更频繁

package cn.chang.operator;
public class OperatorDemo5 {public static void main(String[] args) {// 目标:掌握Java逻辑运算符的使用// && int i = 10;int j = 20;System.out.println(i > 100 && ++j > 10);   // 短路与,右边的代码不执行        System.out.println(j);                     // 20, 说明++j确实没有执行System.out.println(i > 100 & ++j > 10);     // 单与System.out.println(j);                      // 21, 说明右边的代码执行了}
}

Scanner

API:Application Programming Interface:应用程序编程接口,Java写好的程序,程序员可以直接拿来调用。

Java为自己写好的程序提供了相应的 程序使用说明书(API文档)

使用Scanner接收用户键盘输入的数据,需要三个步骤:

①:导包:告诉程序去JDK的哪个包中找扫描器技术一

import java.util.Scanner;

②:抄代码:代表得到键盘扫描器对象(东西)。

Scanner sc=new Scanner(System.in);

③:抄代码:等待接收用户输入数据
int age = sc.nextInt()
System.out.println(“年龄是:”+ age);

注意:System、string在]DK中的ava.lang包下lang包不需要我们导包,是默认的包。

package cn.chang.Scanner;
import java.util.Scanner;
public class ScannerDemo1 {public static void main(String[] args) {// 目标:掌握Scanner扫描器的功能Scanner sc = new Scanner(System.in);System.out.println("请输入您的年龄:");int age = sc.nextInt();System.out.println("请输入您的姓名:"); String name = sc.next();System.out.println("您的年龄是:" + age + "," + "您的名字是:" + name + "。");}
}

在程序中,直接输入Scanner,IDEA自动进行导包操作。所以,非常方便。

我们通过的是Scanner类来获取用户的输入的。

导包:Scanner类就是在java.util包下的,所以需要将该包导入。

五、分支和循环

1.分支

if分支有三种形式

package cn.chang.branch;
import java.util.Scanner;
public class IfDemo1 {    public static void main(String[] args) {        // 目标:需要同学们掌握If分支的三种形式的用法和执行流程        // 需求:测量用户体温、发现体温高于37度就报警        double t = 38.9;        if (t > 37) {            System.out.println("这个人温度异常!");        }
        // 需求:发红包、你的钱包余额是99元,现在要发出90元。        // 如果钱够,触发发红包的动作,如果钱不够,则提示余额不足:        double money = 99;        if (money >= 90) {            System.out.println("发红包成功了!");        }else {            System.out.println("余额不足!");        }
        // 需求3:某个公司有一个绩效系统,根据员工的打分输出对应的绩效级别。        // [0-60] D [60-80] C [80-90] B [90-100] A        Scanner sc = new Scanner(System.in);        System.out.println("请输入员工积分:");        int score = sc.nextInt();
        if (score >= 0 && score < 60) {            System.out.println("D");        }else if(score >= 60 && score < 80) {            System.out.println("C");        }else if(score >= 80 && score < 90) {            System.out.println("B");        }else if(score >= 90 && score <= 100) {            System.out.println("A");        }else {            System.out.println("您输入的积分有问题!");        }    }}

Switch分支

是通过比较值来决定执行哪条分支。

switch分支的执行流程

1)先执行表达式的值,再拿着这个值去与case后的值进行匹配;

2)与哪个case后面的值匹配值为true,就执行哪个case块的代码,遇到break,就跳出switch分支。

3)如果全部case后的值与之匹配都是false,则执行default块的代码。

2.循环

for循环:控制一段代码反复执行多次。

for循环的基本结构

for 循环案例详细流程说明:

例子:

1-100的奇数和

package cn.chang.loop;public class ForDemo2 {public static void main(String[] args) {// 定义变量sum用于求和int sum = 0;// for循环for (int i = 1; i <= 100; i += 2) {sum += i;  // sum = sum + i}System.out.println("1-100的奇数和: " + sum);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/68118.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AlwaysOn 可用性组副本所在服务器以及该副本上数据库的各项状态信息

目录标题 语句代码解释&#xff1a;1. sys.dm_hadr_database_replica_states 视图字段详细解释及官网链接官网链接字段解释 2. sys.availability_replicas 视图字段详细解释及官网链接官网链接字段解释 查看视图的创建语句方法一&#xff1a;使用 SQL Server Management Studio…

GPU-Z重磅更新,Blackwell架构全面支持

由TechPowerUp倾力打造的GPU-Z&#xff0c;是一款集显卡信息查看、实时监控与深度诊断于一体的强大工具。它以其轻巧灵便的体积、完全免费的使用模式以及极其友好的操作界面&#xff0c;赢得了全球无数用户的青睐与信任&#xff0c;成为PC硬件领域中不可或缺的软件。 GPU-Z不仅…

程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<6>

大家好啊&#xff0c;我是小象٩(๑ω๑)۶ 我的博客&#xff1a;Xiao Xiangζั͡ޓއއ 很高兴见到大家&#xff0c;希望能够和大家一起交流学习&#xff0c;共同进步。 今天我们继续来学习数组指针变量&#xff0c;二维数组传参的本质&#xff0c;函数指针变量&#xff0c;…

MySQL时间类型相关总结(DATETIME, TIMESTAMP, DATE, TIME, YEAR)

MySQL时间类型相关总结(DATETIME, TIMESTAMP, DATE, TIME, YEAR) MySQL官方文档&#xff1a; https://dev.mysql.com/doc/refman/8.0/en/date-and-time-types.html 一. 对比&#xff1a; 在 MySQL 中&#xff0c;处理时间相关的数据类型主要有以下几种&#xff1a;DATE、TIME、…

前缀和练习——洛谷P8218:求区间和

题目: 这道题很简单&#xff0c;直接根据题目无脑套公式 代码&#xff1a; #include<bits/stdc.h> using namespace std; const int N 1e5 9; using ll long long; ll a[N], perfix[N]; int main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);//取消同步输…

【STM32】蓝牙模块数据包解析

使用到的蓝牙模块为DX-BT24&#xff0c;他可以将串口转蓝牙&#xff0c;实现与手机蓝牙的通信&#xff0c;本次实现使用手机蓝牙发送数据包来控制单片机LED的亮灭&#xff0c;规则如下&#xff1a; AA 05 01 FF AF 该数据包表示包头为AA&#xff0c;05表示该数据包的大小&#…

NSS-DAY2

Crypto [HNCTF 2022 Week1]A dictator 题目&#xff1a; from random import randint from secret import flagoffset randint(1,100) % 26 # print(offset)assert flag.startswith(NSSCTF{) assert all([ord(c) not in range(ord(A),ord(Z)) for c in flag[7:-1]])for cha…

【vue3 入门到实战】7. 标签中的 ref

目录 1. ref 的作用 2. 如何使用 1. ref 的作用 用于注册模板引用 用在普通DOM标签上&#xff0c;获取的是DOM节点。 用在组件标签上&#xff0c;获取的是组件的实例对象。 2. 如何使用 代码如下 <template><div class"app"><h2 ref"titl…

手写MVVM框架-实现简单的数据代理

MVVM框架最显著的特点就是虚拟dom和响应式的数据、我们以Vue为例&#xff0c;分别实现data、computed、created、methods以及虚拟dom。 这一章我们先实现简单的响应式&#xff0c;修改数据之后在控制台打印。 我们将该框架命名为MiniVue。 首先我们需要创建MiniVue的类(src/co…

spy-debugger + Charles 调试移动端/内嵌小程序H5

简介说明&#xff1a; PC端可以用F12进行console等进行调试&#xff0c;但移动端App中使用webview就无法进行实时调试&#xff0c;针对这种情况 1. 安装 全局安装 spy-debugger sudo npm install spy-debugger -g // window不用加sudo2. spy-debugger 证书 其实spy-debugg…

【目标检测】模型验证:K-Fold 交叉验证

K-Fold 交叉验证 1、引言1.1 K 折交叉验证概述 2、配置2.1 数据集2.2 安装包 3、 实战3.1 生成物体检测数据集的特征向量3.2 K 折数据集拆分3.3 保存记录3.4 使用 K 折数据分割训练YOLO 4、总结 1、引言 我们将利用YOLO 检测格式和关键的Python 库&#xff08;如 sklearn、pan…

Android studio ternimal 中gradle 指令失效(gradle环境变量未配置)

默认gradle路径&#xff1a;C:\Users\ylwj.gradle\wrapper\dists\gradle-8.10.2-bin\a04bxjujx95o3nb99gddekhwo\gradle-8.10.2\bin 环境变量-系统环境变量-双击path-配置上即可-注意重启studio才会生效

Axure大屏可视化动态交互设计:解锁数据魅力,引领决策新风尚

可视化组件/模板预览&#xff1a;https://8dge09.axshare.com 一、大屏可视化技术概览 在数据驱动决策的时代&#xff0c;大屏可视化技术凭借直观、动态的展示方式&#xff0c;已成为众多行业提升管理效率和优化决策过程的关键工具。它能够将复杂的数据转化为易于理解的图形和…

Resnet 改进:尝试在不同位置加入Transform模块

目录 1. TransformerBlock 2. resnet 3. 替换部分卷积层 4. 在特定位置插入Transformer模块 5. 使用Transformer全局特征提取器 6. 其他 Tips:融入模块后的网络经过测试,可以直接使用,设置好输入和输出的图片维度即可 1. TransformerBlock TransformerBlock是Transfo…

MySQL调优02 - SQL语句的优化

SQL语句的优化 文章目录 SQL语句的优化一&#xff1a;SQL优化的小技巧1&#xff1a;编写SQL时的注意点1.1&#xff1a;查询时尽量不要使用*1.2&#xff1a;连表查询时尽量不要关联太多表1.3&#xff1a;多表查询时一定要以小驱大1.4&#xff1a;like不要使用左模糊或者全模糊1.…

langchain教程-12.Agent/工具定义/Agent调用工具/Agentic RAG

前言 该系列教程的代码: https://github.com/shar-pen/Langchain-MiniTutorial 我主要参考 langchain 官方教程, 有选择性的记录了一下学习内容 这是教程清单 1.初试langchain2.prompt3.OutputParser/输出解析4.model/vllm模型部署和langchain调用5.DocumentLoader/多种文档…

大模型中提到的超参数是什么

在大模型中提到的超参数是指在模型训练之前需要手动设置的参数&#xff0c;这些参数决定了模型的训练过程和最终性能。超参数与模型内部通过训练获得的参数&#xff08;如权重和偏置&#xff09;不同&#xff0c;它们通常不会通过训练自动学习&#xff0c;而是需要开发者根据任…

位运算及常用技巧

涉及位运算的运算符如下表所示&#xff1a; 位运算的运算律&#xff1a; 负数的位运算 首先&#xff0c;我们要知道&#xff0c;在计算机中&#xff0c;运算是使用的二进制补码&#xff0c;而正数的补码是它本身&#xff0c;负数的补码则是符号位不变&#xff0c;其余按位取反…

hot100(8)

71.10. 正则表达式匹配 - 力扣&#xff08;LeetCode&#xff09; 动态规划 题解&#xff1a;10. 正则表达式匹配题解 - 力扣&#xff08;LeetCode&#xff09; 72.5. 最长回文子串 - 力扣&#xff08;LeetCode&#xff09; 动态规划 1.dp数组及下标含义 dp[i][j] : 下标i到…

二进制/源码编译安装httpd 2.4,提供系统服务管理脚本并测试

方法一&#xff1a;使用 systemd 服务文件 安装所需依赖 yum install gcc make apr-devel apr-util-devel pcre-devel 1.下载源码包 wget http://archive.apache.org/dist/httpd/httpd-2.4.62.tar.gz 2.解压源码 tar -xf httpd-2.4.62.tar.gz cd httpd-2.4.62 3.编译安装 指定…