java语法基础练习

2023-11-12

1.阅读示例: EnumTest.java,并运行。分析结果

 代码:

public class EnumTest {

    public static void main(String[] args) {
         Size s=Size.SMALL;
         Size t=Size.LARGE;
         //s和t引用同一个对象?
         System.out.println(s==t); //
         //是原始数据类型吗?
         System.out.println(s.getClass().isPrimitive());
         //从字符串中转换
         Size u=Size.valueOf("SMALL");
         System.out.println(s==u); //true
         //列出它的所有值
         for(Size value:Size.values()){  //遍历
               System.out.println(value);
         }
    }
}
enum Size{SMALL,MEDIUM,LARGE};

     程序创立了枚举类型,创立枚举类型要用enum关键字枚举类型可以把相关的常量(编程规范:常量每个字母大写)放到一个枚举类型里,每个值的名称都会转化成一个字符串。由于enum本身也是一个类,因此不能被继承。

     程序中s和t引用的不是同一个对象,也不是原始数据类型。

2.原码:在数值前直接加一符号位的表示法。byte的取值范围是 -27~ 27-1= 256

反码:正数:正数的反码与原码相同。负数:负数的反码,符号位为“1”,数值部分按位取反。例如: 符号位 数值位

补码:正数:正数的补码和原码相同。负数:负数的补码则是符号位为“1”。并且,这个“1”既是符号位,也是数值位。数值部分按位取反后再在末位(最低位)加1。也就是“反码+1”
java中的数是用补码表示的。
3.java变量遵循“同名变量的屏蔽原则”,变量输出的值与作用域有关。
public class Try {
    
    public static int potato=10;
    public static void main(String args[]) {
        //After a day
        int eaten=2;
        int potato=8;
        System.out.println("吃了"+eaten+"后还剩"+potato);
    }

}

程序运行结果为:

4.每个数据类型所占的位数及其能够表示的范围

short  16位 -32768~32767  -2^15~2^15-1

int  32位 -2147483648~2147483647 -2^31~2^31-1

long  64位 -922372036854775808~9223372036854775807 -2^63~2^63-1

float  32位 1.4e-45~3.4028235e38

double  64位 4.9e-324~1.7976931348623157e308

5.运行一段程序,分析结果

public class TestDouble {

    public static void main(String args[]) {
        System.out.println("0.05 + 0.01 = " + (0.05 + 0.01));
        System.out.println("1.0 - 0.42 = " + (1.0 - 0.42));
        System.out.println("4.015 * 100 = " + (4.015 * 100));
        System.out.println("123.3 / 100 = " + (123.3 / 100));
    }
}

结论:使用double类型进行计算,结果是不精确的。

因为这个涉及到二进制与十进制的转换问题。N进制可以理解为:数值×基数的幂,例如我们熟悉的十进制数123.4=1×10²+2×10+3×(10的0次幂)+4×(10的-1次幂);其它进制的也是同理,例如二进制数11.01=1×2+1×(2的0次幂)+0+1×(2的-2次幂)=十进制的3.25。double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。举个例子来说,比如要用4bit来表示小数3.26,从高到低位依次对应2的1,0,-1,-2次幂,根据最上面的分析,应当在二进制数11.01(对应十进制的3.25)和11.10(对应十进制的3.5)之间选择。简单来说就是我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位),而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。

6.输入一段代码判断输出结果:

public class Try {
    
    public static void main(String args[]){
        int X=100;
        int Y=200;
        System.out.println("X+Y="+X+Y);
        System.out.println(X+Y+"=X+Y");
    }

}

 

结果:

原因,+X+Y,表示依次输出XY的值,而X+Y表示一种运算

7.用对话框输入数字并计算,需要判断运算符

import javax.swing.JOptionPane;

public class Calcurlate {
    
    public static void main(String args[])
    {
        String firstNumber,secondNumber;
        String operator;
        int number1,number2,result;
        
        firstNumber=JOptionPane.showInputDialog( "Enter the first integer" );
        secondNumber=JOptionPane.showInputDialog("Enter the second integer");
        operator=JOptionPane.showInputDialog("Enter the operator");
        
        number1 = Integer.parseInt( firstNumber ); 
        number2 = Integer.parseInt( secondNumber );
        
        if(operator.equals("+"))
        {
            result=number1+number2;
            
            JOptionPane.showInputDialog("the result is"+result);
        }
        
        if(operator.equals("-"))
        {
            result=number1-number2;
            
            JOptionPane.showInputDialog("the result is"+result);
        }
        
        if(operator.equals("*"))
        {
            result=number1*number2;
            
            JOptionPane.showInputDialog("the result is"+result);
        }
        
        if(operator.equals("/"))
        {
            result=number1/number2;
            
            JOptionPane.showInputDialog("the result is"+result);
        }
    }

}

 

 

 

 
 

转载于:https://www.cnblogs.com/lzxw/p/5931191.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java语法基础练习 的相关文章

  • 如何在日期选择器中设置不在当前月份的单元格的样式

    我目前正在为我的 JavaFX 应用程序制作注册表 问题是 当日期选择器中的单元格不在页面的月份上时 我想让该单元格变灰 让我们看看我当前的日期选择器 我的日期选择器 正如您所看到的 我希望下个月的日期 27 日 28 日 30 日以及 1
  • Java 中的 XPath 节点集

    我在 eclipse 中有这段代码 NodeSet nodes NodeSet xPath evaluate expression inputSource XPathConstants NODESET 它给我 NodeSet 上的编译时错误
  • 如何将 Java 赋值表达式转换为 Kotlin

    java中的一些东西就像 int a 1 b 2 c 1 if a b c System out print true 现在它应该转换为 kotlin 就像 var a Int 1 var b Int 2 var c Int 1 if a
  • 如何在一行中将字符串数组转换为双精度数组

    我有一个字符串数组 String guaranteedOutput Arrays copyOf values values length String class 所有字符串值都是数字 数据应转换为Double QuestionJava 中
  • Android Studio 在编译时未检测到支持库

    由于 Android Studio 将成为 Android 开发的默认 IDE 因此我决定将现有项目迁移到 Android studio 中 项目结构似乎不同 我的项目中的文件夹层次结构如下 Complete Project gt idea
  • 解决错误:日志已在具有多个实例的atomikos中使用

    我仅在使用atomikos的实时服务器上遇到问题 在我的本地服务器上它工作得很好 我在服务器上面临的问题是 init 中出错 日志已在使用中 完整的异常堆栈跟踪 java lang RuntimeException Log already
  • CXF Swagger2功能添加安全定义

    我想使用 org apache cxf jaxrs swagger Swagger2Feature 将安全定义添加到我的其余服务中 但是我看不到任何相关方法或任何有关如何执行此操作的资源 下面是我想使用 swagger2feature 生成
  • 如何在 Java 中禁用 System.out 以提高速度

    我正在用 Java 编写一个模拟重力的程序 其中有一堆日志语句 到 System out 我的程序运行速度非常慢 我认为日志记录可能是部分原因 有什么方法可以禁用 System out 以便我的程序在打印时不会变慢 或者我是否必须手动检查并
  • HDFS:使用 Java / Scala API 移动多个文件

    我需要使用 Java Scala 程序移动 HDFS 中对应于给定正则表达式的多个文件 例如 我必须移动所有名称为 xml从文件夹a到文件夹b 使用 shell 命令我可以使用以下命令 bin hdfs dfs mv a xml b 我可以
  • Prim 的迷宫生成算法:获取相邻单元格

    我基于 Prim 算法编写了一个迷宫生成器程序 该算法是 Prim 算法的随机版本 从充满墙壁的网格开始 选择一个单元格 将其标记为迷宫的一部分 将单元格的墙壁添加到墙壁列表中 While there are walls in the li
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • 在具有相同属性名称的不同数据类型上使用 ModelMapper

    我有两节课说Animal AnimalDto我想用ModelMapper将 Entity 转换为 DTO 反之亦然 但是对于具有相似名称的一些属性 这些类应该具有不同的数据类型 我该如何实现这一目标 动物 java public class
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • 检查 protobuf 消息 - 如何按名称获取字段值?

    我似乎无法找到一种方法来验证 protobuf 消息中字段的值 而无需显式调用其 getter 我看到周围的例子使用Descriptors FieldDescriptor实例到达消息映射内部 但它们要么基于迭代器 要么由字段号驱动 一旦我有
  • Java直接内存:在自定义类中使用sun.misc.Cleaner

    在 Java 中 NIO 直接缓冲区分配的内存通过以下方式释放 sun misc Cleaner实例 一些比对象终结更有效的特殊幻像引用 这种清洁器机制是否仅针对直接缓冲区子类硬编码在 JVM 中 或者是否也可以在自定义组件中使用清洁器 例
  • Android JNI C 简单追加函数

    我想制作一个简单的函数 返回两个字符串的值 基本上 java public native String getAppendedString String name c jstring Java com example hellojni He
  • 如何修复“sessionFactory”或“hibernateTemplate”是必需的问题

    我正在使用 Spring Boot JPA WEB 和 MYSQL 创建我的 Web 应用程序 它总是说 sessionFactory or hibernateTemplate是必需的 我该如何修复它 我已经尝试过的东西 删除了本地 Mav
  • com.jcraft.jsch.JSchException:身份验证失败

    当我从本地磁盘上传文件到远程服务器时 出现这样的异常 com jcraft jsch JSchException Auth fail at org apache tools ant taskdefs optional ssh Scp exe
  • Jackson 将单个项目反序列化到列表中

    我正在尝试使用一项服务 该服务为我提供了一个带有数组字段的实体 id 23233 items name item 1 name item 2 但是 当数组包含单个项目时 将返回该项目本身 而不是包含一个元素的数组 id 43567 item
  • Swagger/Openapi-Annotations:如何使用 $ref 生成 allOf?

    我正在生成 Rest 端点 包括添加OpenAPI Swagger对生成的代码进行注释 虽然它对于基本类型运行得很好 但我在自定义类方面遇到了一些问题 现在我有很多自定义类的重复架构条目 使用 Schema 实现 MyClass class

随机推荐

  • 解决VMware虚拟机Ubuntu 18.04无法上网问题!

    由于应用需要 安装了Ubuntu18 04 整体效果还不错 唯一的BUG就是网络不稳定 很容易断网 常常出现 connected failed 解决办法 1 sudo service network manager stop 2 删除之前先
  • Epoll实验总结

    Epoll实验总结 2012 09 06 15 54 10 分类 network program 标签 epoll c 举报 字号 订阅 下载LOFTER 我的照片书 一 超时实验 建立一个阻塞模式的tcp连接到一个没有监听的服务端口 肯定
  • 【vue3】vue3在父组件中调用子组件中定义的methods

    首先要区分子组件的setup的写法 写法1 子组件的setup写在
  • 声音的基础知识

    一 声音的定义 声音 sound 是由物体振动产生的声波 是通过介质 空气或固体 液体 传播并能被人或动物听觉器官所感知的波动现象 最初发出振动 震动 的物体叫声源 声音以波的形式振动 震动 传播 声音是声波通过任何介质传播形成的运动 声音
  • 【mmsegmentation模型训练deeplabv3】自定义数据集加载和训练

    目录 前言 mmsegmentation下载 mmsegmentation官网 欢迎来到 MMSegmentation 的文档 MMSegmentation 0 27 0 文档https mmsegmentation readthedocs
  • Mac os使用git,不依赖Xcode

    说明 后来发现使用mac的命令行开发者工具很香 于是又删除了下文安装的git 直接点击下图的 安装 来获取命令行开发者工具 安装路径是 Library Developer CommandLineTools 包含了git gcc g make
  • import com.google.common.* 出错,找不到

    一 问题 在启动项目的时候 import com google common base Preconditions 报错 找不到这个类 二 解决 要引入guavar依赖 Guava 中文是石榴的意思 该项目是 Google 的一个开源项目
  • JavaWeb 相关问题汇总:

    我是目录 1 输入 URL 后发生了什么事情 如何定位服务资源 2 如何接收 HTTP 请求数据 3 ajax有什么作用 4 Filter 过滤器 5 tomcat 1 输入 URL 后发生了什么事情 如何定位服务资源 通过IP找到主机 通
  • 华为OD2023(A卷)基础题27【找数字、找等值元素】

    华为OD机试 找数字 找等值元素 找数字 给一个二维数组nums 对于每一个元素num i 找出距离最近的且值相等的元素 输出横纵坐标差值的绝对值之和 如果没有等值元素 则输出 1 输入描述 输入第一行为二维数组的行 输入第二行为二维数组的
  • java通过经纬度获取区间

    引入依赖
  • python语言程序设计实践教程答案上海交通大学陈东_《C语言程序设计》蔺德军 主著【摘要 书评 在线阅读】-苏宁易购图书...

    商品参数 作者 蔺德军 主著 出版社 辽宁大学出版社 出版时间 2015 11 01 ISBN 9787121274220 版权提供 辽宁大学出版社 基本信息 书名 C语言程序设计上机实验与习题解答 定价 29 00元 售价 18 6元 便
  • 卡内基梅隆大学(CMU),那些经受住时间考验的机器学习论文–第二弹:动态主题模型

    这次 我们要解释一种典型的机器学习算法 动态主题模型 Dynamic Topic Model 概率主题模型和概率图模型是每个做文本挖掘的学者的必学课题 其中最常见的主题模型是隐含狄利克雷分布 LDA 当然 本文的动态主题模型也是主题模型的一
  • Mysql group by 与order by 一起使用

    项目中遇到这样的要求 从数据表里查出每台机器的最后一次链接时间 必须group by机器id order by connect time SELECT c d equipment type FROM ms gateway connect c
  • C++中float和double的比较

    在c 开发中 double或者float类型判断相等性不能简单的用等于符号 进行 一般会采用如下方式进行判断 static inline bool DoubleEqual double a double b return fabs a b
  • Log4j学习笔记

    Log4j学习笔记 1 入门实例 2 Log4j基本使用方法 2 1 定义配置文件 2 2 在代码中使用Log4j 2 3 日志级别 本文参考https blog csdn net u013870094 article details 79
  • 实战--Kafka学习(二)

    问题导读1 Kafka工作包含哪些流程 2 为防止log文件过大导致数据定位效率低下 kafka引入了什么 3 Kafka生产者分区的原因和原则是什么 4 Kafka数据可靠性是如何保证的 3 1 Kafka工作流程及文件存储机制Kafka
  • 哈希及其应用(字典,加密等)

    一 名词说明 Hash 一般翻译做散列 杂凑 或音译为哈希 是把任意长度的输入 又叫做预映射pre image 通过散列算法变换成固定长度的输出 该输出就是散列值 这种转换是一种压缩映射 也就是 散列值的空间通常远小于输入的空间 不同的输入
  • kafka学习

    链接1 Kafka入门教程 香菜 的博客 CSDN博客 链接2 https mbd baidu com ug share mbox 4a83aa9e65 share product smartapp tk d716b5f663babe030
  • mysql函数及关键字使用

    collect set collect set col 函数只接受 基本数据类型 它的主要作用是将某字段的值进行去重汇总 产生array类型字段 MySQL中concat函数 连接字符串 MySQL中concat函数 使用方法 concat
  • java语法基础练习

    1 阅读示例 EnumTest java 并运行 分析结果 代码 public class EnumTest public static void main String args Size s Size SMALL Size t Size