java基础(1)数据类型,运算符,逻辑控制语句以及基本应用

news2024/12/23 2:10:28

目录

​编辑

 1.前言

2.正文

2.1数据类型与变量

2.1.1字面常量

2.1.2数据类型

2.1.3变量

2.1.3.1整型

2.1.3.2浮点型

2.1.3.3字符型

2.1.3.4布尔型

2.1.4类型转换与类型提升

2.1.4.1字符串的拼接

2.1.4.2整型转字符串

2.1.4.3字符串转整数

2.2运算符

2.2.1算术运算符

2.2.2关系运算符

2.2.3逻辑运算符(关键)

2.2.4位运算符

2.2.5移位运算符

2.2.6条件运算符  

2.3逻辑控制语句

2.3.1分支结构

2.3.2循环结构

3.基础应用

3.1判断素数

3.2判断闰年

3.3打印九九乘法表

3.4返回参数二进制中 1 的个数

3.5猜数字游戏

4.小结​编辑


1.前言

哈喽小伙伴们大家好哦~从今天开始笔者就要开始正式学习java了,基础的语法语言之间都是很类似的,所以基础语法的博客就记录的凝练一些,创作的这些博客也算是一些学习笔记,又相当于给大家做知识分享咯,希望大家一起加油哦!

2.正文

2.1数据类型与变量

2.1.1字面常量

字面常量主要有以下几种,接下来我通过代码和注释给大家一一实现:

public class test1 {
    public static void main(String[] args) {
        System.out.println(123);//整型常量
        System.out.println(12.3);//浮点型常量
        System.out.println('a');//字符常量
        System.out.println("abc");//字符串常量
        System.out.println(true);//布尔常量
    }
}

 打印结果如下:

2.1.2数据类型

在java中,共有俩种数据类型,分别是基本数据类型与引用数据类型。这俩大类分类的标准是基本数据类型是Java中预定义的,而引用数据类型是指向内存中的一个对象,以此来区分。

2.1.3变量

变量的创建方法: 数据类型 变量名 = 初始值;(下文代码均有体现)

2.1.3.1整型

整型共包括四种:

  1. 字节型:type,占用一个字节,范围-128~127,包装类型为Type
  2. 短整型:short,占用俩个字节,范围-32768 ~ 32767,包装类型为Short
  3. 整型:int,占用四个字节,范围-2^{_{31}}~2^{_{31}}-1,包装类型为Interger
  4. 长整形:long,占用八个字节,范围-2^{63}~2^{63}-1,包装类型为Long

其中整型是由符号的,整型默认为int型

代码演示:

 public static void main(String[] args) {
        byte a = 5;
        short b = 10;
        int c = 15;
        long d = 20;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
    }

 运行结果:

有关这四种类型的互相转换需要特别讲解一下,让我们先来看下面这段代码:

public static void main(String[] args) {
        byte a = 10;
        byte b = 20;
        int c = a + b;
        System.out.println(c);
    }

该代码段将byte字节型的变量转化为int整型变量,将一个字节的内容转化成四个字节存储的内容,显然没有问题。 

但接下来这段代码如果把进程颠倒过来,事情就发生了转变,请看:

public static void main(String[] args) {
        byte a = 10;
        int b = 129;
        a = (byte)b;

        System.out.println(a);
    }

打印结果却不是我们想要的129,而是-127。

也许有些同学会疑惑 ,为什么打印出来的不是我们想要的结果呢。原因很简单,因为int作为整型变量占有四个字节,强制转换仅占一个字节byte类型会丢失后面三个字节的内容,从而结果有误。所以在这里,博主建议,非必要尽量避免类型的强制转化,有些错误可能当时没有发生,但这就是埋藏的一颗雷,时刻可能出问题。

 更加详细的类型提升与类型转换在下文还会有讲解。

2.1.3.2浮点型

浮点型包含俩种:

  1. 单精度浮点数:float,占四个字节
  2. 双精度浮点数:double,占八个字节

 代码如下:

public static void main(String[] args) {

        double num = 1.1;
        System.out.println(num * num);

        float f = 12.5F;
        System.out.println(f);

    }

 运行结果如下:

另外需要注意的点是如果俩个int型

2.1.3.3字符型

字符型只有一种char类型,占据俩个字节,包装类型为,接下来展示其具体应用。

public static void main(String[] args) {
        char ch1 = 'a';
        char ch2 = '高';
        System.out.println(ch1);
        System.out.println(ch2);
        Character c = 'p';
    }
2.1.3.4布尔型

布尔型关键字为boolean,范围仅为true和false,而非1和0

public static void main(String[] args) {
        boolean b = true;//Boolean
        System.out.println(b);
    }

2.1.4类型转换与类型提升

2.1.4.1字符串的拼接

如果们想把俩个简单的字符串相连,仅仅只需要+即可,代码如下:

public static void main(String[] args) {
        String str = "hello";
        String str2 = "word";
        System.out.println(str+str2);
        System.out.println(str.length());//用于查询字符串长度
        System.out.println(str.charAt(0));//用于查询字符串的第n位的字符

    }

运行结果如下:

2.1.4.2整型转字符串

将整型转化为字符串有俩种办法:

  1. 一是之际利用+" "来实现
  2. 二是基本数据类型都可以通过String.valueOf()方法转化为字符串表示形式

代码展示如下:

public static void fun() {
        int a = 123;
        String str = a+"";
        System.out.println(str);
        System.out.println("========");
        String str1 = String.valueOf(a);
        System.out.println(str1);
    }
2.1.4.3字符串转整数
public static void main(String[] args) {
        String str = "123";
        int a = Integer.parseInt(str);
        System.out.println(a);
    }

2.2运算符

2.2.1算术运算符

算术运算符自然包括一些我们熟知的加减乘除模,接下来我进行总结:

加法运算符 (+)

  • 用于将两个数值相加。
  • 也可以用于字符串连接。
int a = 10;
int b = 5;
int sum = a + b; // sum = 15
String str = "Hello, " + "World!"; // str = "Hello, World!"

减法运算符 (-)

  • 用于从一个数值中减去另一个数值。
int a = 10;
int b = 5;
int difference = a - b; // difference = 5

乘法运算符 (*)

  • 用于将两个数值相乘。
int a = 10;
int b = 5;
int product = a * b; // product = 50

除法运算符 (/)

  • 用于将一个数值除以另一个数值。
  • 结果是一个浮点数,即使两个操作数都是整数。
int a = 10;
int b = 5;
double quotient = (double) a / b; // quotient = 2.0

取模运算符 (%)

  • 用于求两个整数相除的余数。
int a = 10;
int b = 3;
int remainder = a % b; // remainder = 1

自增运算符 (++)

  • 用于将变量的值增加1。
  • 可以作为前缀(先增后用)或后缀(先用后增)。
int a = 5;
a++; // 后缀,a = 6
++a; // 前缀,a = 7

自减运算符 (--)

  • 用于将变量的值减少1。
  • 可以作为前缀或后缀。
int a = 5;
a--; // 后缀,a = 4
--a; // 前缀,a = 3

以上许多在大部分语言中都类似,一些细微的差别主要区分在细节上。

2.2.2关系运算符

关系运算符用于比较两个值,并返回一个布尔值(truefalse)。以下是Java中的关系运算符及其用法:

等于 (==)

  • 检查两个值是否相等。
int a = 5;
int b = 5;
boolean result = (a == b); // result = true

不等于 (!=)

  • 检查两个值是否不相等。
int a = 5;
int b = 10;
boolean result = (a != b); // result = true

大于 (>)

  • 检查左边的值是否大于右边的值。
int a = 5;
int b = 3;
boolean result = (a > b); // result = true

(大于,小于,大于等于,小于等于类似在这里不一一列举)

2.2.3逻辑运算符(关键)

逻辑与 (&&)

  • 逻辑与运算符用于比较两个布尔表达式,只有当两个表达式都为 true 时,结果才为 true
  • 它是短路运算符,如果第一个表达式为 false,则不会评估第二个表达式。
boolean a = true;
boolean b = false;
boolean result = (a && b); // result = false

逻辑或 (||)

  • 逻辑或运算符用于比较两个布尔表达式,只要有一个表达式为 true,结果就为 true
  • 它也是短路运算符,如果第一个表达式为 true,则不会评估第二个表达式。
boolean a = true;
boolean b = false;
boolean result = (a || b); // result = true

逻辑非 (!)

  • 逻辑非运算符用于反转布尔表达式的值,将 true 转换为 false,将 false 转换为 true
boolean a = true;
boolean result = (!a); // result = false

逻辑异或 (^)

  • 逻辑异或运算符用于比较两个布尔表达式,如果两个表达式不同,则结果为 true
  • 它不是短路运算符,无论第一个表达式的值如何,都会评估第二个表达式。
boolean a = true;
boolean b = false;
boolean result = (a ^ b); // result = true

条件运算符 (?:)

  • 条件运算符也称为三元运算符,它是一种简写的if-else语句,用于在单个表达式中进行条件判断。
int a = 10;
int b = 20;
int max = (a > b) ? a : b; // max = 20

2.2.4位运算符

位与 (&)

  • 对应位都为1时,结果才为1,否则为0。
int a = 12; // 1100
int b = 9;  // 1001
int result = a & b; // 1000 (8)

位或 (|)

  • 对应位至少有一个为1时,结果为1,否则为0。
int a = 12; // 1100
int b = 9;  // 1001
int result = a | b; // 1101 (13)

位异或 (^)

  • 对应位相同则结果为0,不同则结果为1。
int a = 12; // 1100
int b = 9;  // 1001
int result = a ^ b; // 0101 (5)

位非 (~)

  • 反转操作数的每一位,即0变为1,1变为0。
int a = 9;  // 1001
int result = ~a; // 0110 (-10)

2.2.5移位运算符

左移 (<<)

  • 将操作数的二进制表示向左移动指定的位数,右边空出的位补0。
int a = 9;  // 1001
int result = a << 2; // 100100 (36)

右移 (>>)

  • 将操作数的二进制表示向右移动指定的位数,左边空出的位用符号位填充(对于正数是0,对于负数是1)。
int a = -9; // 11111111111111111111111111110111 (32位补码)
int result = a >> 2; // 11111111111111111111111111111101 (-3)

无符号右移 (>>>)

  • 将操作数的二进制表示向右移动指定的位数,左边空出的位补0,不考虑符号位。
int a = -9; // 11111111111111111111111111110111 (32位补码)
int result = a >>> 2; // 00111111111111111111111111111101 (1073741825)

2.2.6条件运算符  

条件运算符只有一个三目运算符:

表达式为:条件表达式 ? 表达式1 : 表达式2。

  • 这里的“条件表达式”是一个返回布尔值的表达式,如果条件表达式的结果为 true,则整个三目运算符的结果为“表达式1”的值;如果条件表达式的结果为 false,则结果为“表达式2”的值。
int a = 10;
int b = 20;
int max = (a > b) ? a : b; // max = 20,因为 a 不大于 b

2.3逻辑控制语句

2.3.1分支结构

if语句

  • 用于在满足特定条件时执行一段代码。
if (condition) {
    // 当条件为true时执行的代码
}

if-else语句

  • 用于在条件为真时执行一段代码,条件为假时执行另一段代码。
if (condition) {
    // 当条件为true时执行的代码
} else {
    // 当条件为false时执行的代码
}

if-else if-else语句

  • 用于在多个条件之间进行选择,并执行相应的代码块。
if (condition1) {
    // 当条件1为true时执行的代码
} else if (condition2) {
    // 当条件1为false且条件2为true时执行的代码
} else {
    // 当所有条件都不为true时执行的代码
}

switch语句

  • 用于根据变量的值选择执行不同的代码块。部分版本中中,switch语句支持字符串和箭头(->)语法。
switch (expression) {
    case value1:
        // 当expression的值等于value1时执行的代码
        break;
    case value2:
        // 当expression的值等于value2时执行的代码
        break;
    default:
        // 当expression的值不匹配任何case时执行的代码
}

2.3.2循环结构

for循环

  • 用于已知循环次数的情况。

例如,打印0到9的数字:

for (int i = 0; i < 10; i++) {
    System.out.println(i);
}

while循环

  • 用于循环次数未知,但有一个继续执行循环的条件。

例如,当变量i小于10时继续循环:

int i = 0;
while (i < 10) {
    System.out.println(i);
    i++;
}

do-while循环

  • 类似于while循环,但它至少执行一次循环体,即使条件为假。

例如,至少打印一次变量i的值,然后检查i是否小于10:

int i = 0;
do {
    System.out.println(i);
    i++;
} while (i < 10);

3.基础应用

以下题目供基础语法训练时使用,仅提供代码

3.1判断素数

import java.util.Scanner;
import java.lang.Math;

public class test1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int flag = 1;
        for(int i = 2;i < Math.sqrt(n);i++){
            if(n % i ==0){
                System.out.println(n + "不是素数");
                flag = 0;
                break;
            }
        }
        if(flag==1){
            System.out.println(n + "是素数");
        }
    }
}

3.2判断闰年

import java.util.Scanner;
import java.lang.Math;

public class test1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入需要判断的年份");
        int n = scanner.nextInt();
        if(n % 4 ==0||n % 400 == 0){
            System.out.println("该年份为闰年");
        }
        else{
            System.out.println("该年份不是闰年");
        }
    }
}

3.3打印九九乘法表

import java.util.Scanner;
import java.lang.Math;

public class test1 {
    public static void main(String[] args) {
        int n = 9;
        for(int i = 1;i <= 9;i++){
            for(int j = 1;j <= i;j++){
                System.out.printf("%d * %d = %d ",i ,j, i*j);
            }
            System.out.println();
        }
    }
}

3.4返回参数二进制中 1 的个数

import java.security.DrbgParameters;
import java.util.Scanner;
import java.lang.String;

public class test1 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int number = scanner.nextInt();
            int ans = 0;
            String binaryString = Integer.toBinaryString(number);
            char[] str1 = binaryString.toCharArray();
            for(int i = 0;i <binaryString.length() ;i++){
                if(str1[i] == '1')ans++;
            }
            System.out.println(ans);
    }
}

3.5猜数字游戏

import java.util.Scanner;
import java.lang.String;
import java.util.Random;


public class test1 {
        public static void main(String[] args) {
            Random random = new Random();
            Scanner scanner =new Scanner(System.in);
            int min = 1;int max = 100;
            int num = random.nextInt(max - min + 1) + min;;
            int n = 0;
            while(n!=num){
                System.out.println("请输入你要猜的数字");
                n = scanner.nextInt();
                if(n > num){
                    System.out.println("输入数字大,请重新输入");
                    continue;
                }
                if(n < num){
                    System.out.println("输入数字小,请重新输入");
                    continue;
                }
                if(n == num){
                    System.out.println("恭喜你!猜对了");
                    break;
                }
            }
    }
}

4.小结

今天的java基础知识分享到这里就结束了,博主也是码了好多字,希望大家多多支持我哦。

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

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

相关文章

小红书笔记数单日突破1.3万,8月全网都被这只猴子刷屏了!

8月20日早上10点&#xff0c;《黑神话&#xff1a;悟空》正式发布后立刻席卷全网&#xff0c;众多玩家在游戏正式发布后火速进入游戏界面&#xff0c;甚至有多家公司宣布放假让员工玩《黑神话悟空》&#xff0c;不论是玩游戏的、还是不玩游戏的&#xff0c;都为之献上巨大的关注…

一个让LLM更具创造力的“超级提示词“

1. “超级提示词” 开源项目简介 Github 上最近开源了一个名为 “超级提示词” (Super Prompt) 的项目&#xff0c;该项目旨在激发大语言模型&#xff08;LLM&#xff09;的创造力和发散思维。通过输入这些提示词&#xff0c;LLM 能够生成更多新颖的想法&#xff0c;对于需要创…

Linux网络:总结协议拓展

1. TCP/IP四层模型总结 2. 网络协议拓展 DNS协议&#xff08;地址解析协议&#xff09; TCP/IP使用IP地址和端口号来确定网络中一台主机的一个程序。 但是这样标定不方便记忆&#xff0c;于是开始引出主机名&#xff08;字符串&#xff09;&#xff0c;使用hosts文件来描述…

Monte Carlo方法解决强化学习问题

本文继续深入探讨蒙特卡罗 (MC)方法。这些方法的特点是能够仅从经验中学习,不需要任何环境模型,这与动态规划(DP)方法形成对比。 这一特性极具吸引力 - 因为在实际应用中,环境模型往往是未知的,或者难以精确建模转移概率。以21点游戏为例:尽管我们完全理解游戏规则,但通过DP方…

智慧教室无纸化同屏方案是否适用RTMP?

智慧教室无纸化方案技术背景 智慧教室无纸化方案是一种基于现代信息技术&#xff0c;旨在通过数字化手段实现教学过程的无纸化、智能化和高效化的解决方案。该方案以学生为中心&#xff0c;强调互动化的数字教学服务&#xff0c;旨在提升教学质量和学习效率&#xff0c;同时减…

SprinBoot+Vue宠物店管理系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…

Comsol 双层薄板夹芯结构声辐射响应

阻尼双层板的声辐射特性可以通过以下原理进行解释&#xff1a; 1. 双层板的振动模态&#xff1a;当双层板受到外力作用时&#xff0c;会发生振动&#xff0c;其振动模态会影响其声辐射特性。在双层板内部&#xff0c;振动模态分为两种类型&#xff1a;弯曲模态和剪切模态。而在…

ADG切换异常

一、问题现象 备库切换主库的过程中&#xff1a; alter database commit to switchover to primary with session shutdown; 有一个进程始终是active状态&#xff0c;导致无法完成切换。 主库已切换成&#xff1a;RECOVERY NEEDED --备用数据库还没有接收到切换请求 SWITC…

(Lane Detection-3)PVALane————OpenLane数据集的SOTA模型

PVALane作为最新的SOTA模型&#xff0c;横空出世&#xff0c;让我们来一起仔细阅读这篇文章 提出问题 上图展示了当前Lane Detection中的主要问题&#xff1a; 受益于3D物体检测的成功&#xff0c;当前的3D车道线检测模型&#xff08;通常通过使用逆透视映射&#xff08;IPM&…

Leetcode 最大子数组和

使用“Kadane’s Algorithm”来解决。 Kadane’s Algorithm 在每个步骤中都保持着一个局部最优解&#xff0c;即以当前元素为结尾的最大子数组和(也就是局部最优解)&#xff0c;并通过比较这些局部最优解和当前的全局最优解来找到最终的全局最优解。 Kadane’s Algorithm的核…

git使用手册

其余内容可以参考洪的学习笔记 一 安装 Linux sudo apt-get install gitWIndows “Git”->“Git Bash” 1.1 配置 分布式版本控制&#xff0c;所有机器自报家门 git config --global user.name "Your Name" git config --global user.email "emailexa…

HashTable哈希表;对象流

HashTable HashMap&HashTable 编号比较HashMapHashTable1线程安全✕✓2keynull✓✕3valuenull✓✕4效率高低 package com.ffyc.map;import javax.print.DocFlavor; import java.util.HashMap; import java.util.Hashtable; import java.util.Map;public class HashTableD…

LLMs技术 | 整合Ollama实现本地LLMs调用

前言 近两年AIGC发展的非常迅速&#xff0c;从刚开始的只有ChatGPT到现在的很百家争鸣。从开始的大参数模型&#xff0c;再到后来的小参数模型&#xff0c;从一开始单一的文本模型到现在的多模态模型等等。随着一起进步的不仅仅是模型的多样化&#xff0c;还有模型的使用方式。…

如何修改tomcat服务器的端口号?

四、如何修改tomcat服务器的端口号&#xff1f; 有3种方式修改tomcat服务器的端口号&#xff1a; &#xff08;1&#xff09;修改 conf/server.xml &#xff08;2&#xff09;集成的本地Tomcat中通过HTTP port修改 &#xff08;3&#xff09;pom.xml文件中通过tomcat插件的co…

EG边缘计算网关连接中移ONENET物联网平台(MQTT协议)

上文&#xff1a;EG边缘计算网关连接阿里云物联网平台&#xff08;MQTT协议&#xff09; 需求概述 本章节主要实现一个流程&#xff1a;EG8200mini采集Modbus RTU数据&#xff0c;通过MQTT协议连接中移ONENET物联网平台 Modbus RTU采集此处不做过多赘述&#xff0c;可参考其…

什么是迟滞?

在描述两个量之间的关系时&#xff0c;我们通常可以说特定的输入值对应于特定的输出值。例如&#xff0c;放大器具有输入电压和输出电压&#xff0c;这些电压与增益相关&#xff08;在现实生活中增益是频率的函数而不是常数&#xff09;。如果我们忽略饱和等非理想因素&#xf…

【实战篇】为什么我的MySQL会“抖”一下?

背景 不知道你有没有遇到过这样的场景&#xff0c;一条 SQL 语句&#xff0c;正常执行的时候特别快&#xff0c;但是有时也不知道怎么回事&#xff0c;它就会变得特别慢&#xff0c;并且这样的场景很难复现&#xff0c;它不只随机&#xff0c;而且持续时间还很短。看上去&…

Conda安装R环境并在Jupyter Lab中运行

说明&#xff1a; Conda 安装 R 环境&#xff0c;并在 Jupyter Lab 中运行 R 脚本。 1. 创建环境并安装r-base 创建环境&#xff1a;conda create -n [环境名] 激活环境&#xff1a;conda activate [环境名] 安装 Jupyter Lab&#xff1a;conda install -c conda-forge jupy…

【北京迅为】《STM32MP157开发板使用手册》-第十七章 制作Ubuntu文件系统

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器&#xff0c;既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构&#xff0c;主频650M、1G内存、8G存储&#xff0c;核心板采用工业级板对板连接器&#xff0c;高可靠&#xff0c;牢固耐…

SpringBoot2:请求处理原理分析-接口方法的返回值处理(returnValueHandlers)

一、知识回顾 前面&#xff0c;我们学习了&#xff0c;一个请求过来&#xff0c;先经过filter组件&#xff0c;判断restful风格接口的请求类型。 然后&#xff0c;通过HandlerMapping找到处理该请求的接口。 接着&#xff0c;进入接口方法的参数解析环节&#xff0c;这里主要学…