00java语法基础和课后实践
一:运行代码,并分析结果
代码1:
package reserve;
public class Main { 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};
测试结果截图:
分析结果和结论:
1.对于枚举类型的变量,“==”和“equals()”方法执行的结果是等价的。
2.枚举的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。
3.枚举是常量,所以应该用大写;
4.枚举隐含地继承了java.lang.Enum,所以它具有java.lang.Enum的属性和方法;
5.for(Size value:Size.values()){
System.out.println(value);为遍历枚举,输出为 SMALL
MEDIUM
LARGE
6.getDeclaringClass() 方法返回和当前枚举常量的枚举类型对应的 class 对象
代码2:
package reserve;
public class Main {
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为字面量是不发生改变的,“”外面的运算符+将变量X+Y进行连接;
代码:3:
package reserve;
public class Main {
private static int value=1; public static void main(String[] args) {
int value=2;
System.out.println(value);
}
}
测试结果截图:
package hhj;
public class Hhj{
public static int value=6;
public static void main(String[] args) {
int value=2;
System.out.println(value);
}
}
测试结果:2
结论:在函数里面的赋值优先于在函数外赋值,函数外的赋值可以赋给类中的多个函数,如果函数里面没有重复的赋值,那么函数的值为函数外的。
代码4:
package reserve;
public class Main { 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类型的数值进行计算,的出来的结果是不精确的。这个涉及到二进制与十进制的转换问题。double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。double类型后面舍去的位数一定会带来误差,从而不能得到“数学上精确”的结果。
二:原码,反码,补码解读
原码: 二进制定点表示法(八位),即最高位为符号位(左数第一位),“0”表示正,“1”表示负,其余位表示数值的大小(二进制)。
反码: 正数的反码与其原码相同。
负数的反码是对其原码依次取反(0->1,1->0),但是符号位除外。
补码:正数的补码与其原码相同
负数的补码是在其反码的末尾加一(用二进制的加法,注意1+1进位)。
正数的原码,反码和补码是相同的。
正数举例:
负数举例:
代码(十进制数转换成计算机识别的8位的二进制数):
package reserve;
import java.util.Scanner; public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count[]=new int[8];
int j=0;//定义一个数量为8的数组用来存储二进制的数;
System.out.println("请输入整数:");
int num = sc.nextInt();
System.out.println("原码:");
if(num>0)
count[0]=0;
else {
count[0]=1;
num=-num;
}
System.out.print(count[0]);
String a = ""; //用字符串拼接
while(num!=0) { //利用十进制转二进制除2法
a=num%2+a;
num=num/2;
j++;
} for(int k=1;k<8-j;k++)
{
count[k]=0;
System.out.print(count[k]);
}
System.out.println(a);
int math=Integer.parseInt(a);
// String aS = String.valueOf(a);
//char[] asC = aS.toCharArray();将字符串转换成整型
//String result = Integer.toBinaryString(num);//将十进制数转换成二进制数 }
}
三:看看下图,再查看Java中的每个数据类型所占的位数,和表示数值的范围,写出所得的结论。
结论:每个数据类型所占的位数和表示数值的范围
byte:1字节 -128~127
short:2字节 -2^15~2^15-1
int :4字节 -2^31~2^31-1
long:8字节 -2^63~2^63-1
boolean:1字节 true false(java中不能以0或非0代替)
float: 4字节 -3.403E38~3.403E38
double:8字节 -1.798E308~- 4.9E324
char:2字节 ’\u0000‘~' ’\uffff '(16进制的,换算过来即0~65535)
(1字节等于8位)
实数代表无精度损失,虚线代表有精度损失。一般来说在实线两端都是由低精度指向高精度的类型,所占的位数从高到低,范围从小到大,所以可得出,低精度向高精度转化不丢失精度,反之,从高精度转向低精度则会损失。
00java语法基础和课后实践的更多相关文章
- 00-JAVA语法基础--课后作业
题目:像二柱子那样,花20分钟写一个能自动生成30道小学四则运算题目的“软件”. package 课堂作业1; import java.util.Random; import java.util.Sc ...
- 00-JAVA语法基础--动手动脑
1.运行EnumTest.java,并分析结果,得出结论. 其源代码以及运行结果截图如下: 枚举类型的常量以字符串的形式顺序储.源代码中s和t不是原始数据类型.getCLass():取得当前对象所属的 ...
- 00JAVA语法基础_动手动脑
1.仔细阅读示例: EnumTest.java,运行它,分析运行结果? 枚举类型的使用是借助ENUM这样一个类,这个类是JAVA枚举类型的公共基本类.枚举目的就是要让某个变量的取值只能为若干固定值中的 ...
- Java语法基础动手动脑实践
输出结果为: 0.05+0.01=0.0600000000000000051.0-0.42=0.58000000000000014.015*100401.49999999999994123.3/100 ...
- 00-JAVA语法基础
1. 原码为数的二进制数,反码是将其二进制数每一位按位取反.补码则不同,正数的补码是其原码本身,负数的补码是其除符号位以外其他每一位按位取反再加一,符号位不变. int a=100; a=a>& ...
- 00JAVA语法基础_六位验证码 01
在网上看了许多的源程序,涉及到的东西也不太一样,多了图形处理的,由于还没理解太明白,只是做了控制台. package Six_Code; import java.util.Random; import ...
- 00JAVA语法基础_四则运算 01
自动生成30道四则运算的数学题,当前只是简单符合出题,答题和判断的代码,还没做要求,所以现在只是能随机生成三十道100以内的加减法和九九乘法表的乘除法 package Sizeyunsuan; /** ...
- 00JAVA语法基础 原码、反码、补码
记得之前学C语言的时候老师课上讲过一些,不过当时觉得考试不考,也就上课听了下,下课也没怎么多做了解.这次,Java课上再次提出来了,自己也超越了些资料,对这三种概念算是有所初步了解. 1.原码 数据储 ...
- Lua脚本之语法基础快速入门
要 1.基本数据类型 2.Lua中的常用语句结构以及函数 3.Lua中的常用语句结构介绍 4.Lua中的库函数 目录[-] 一.基本数据类型 二.Lua中的常用语句结构以及函数 1.Lua中的常用语句 ...
随机推荐
- ELK之 elasticsearch ES集群 head安装
最近项目用到 jenkins ELK 也在一次重新学习了一次 jenkins 不用说了 玩得就是 插件 + base---shell , ELK 这几年最流得log收集平台,当然不止 ...
- P1045 快速排序
P1045 快速排序 转跳点:
- Python 中 对logging 模块进行封装,记录bug日志、日志等级
是程序产生的日志 程序员自定义设置的 收集器和渠道级别那个高就以那个级别输出 日志和报告的作用: 报告的重点在于执行结果(执行成功失败,多少用例覆盖),返回结果 日志的重点在执行过程当中,异常点,哪里 ...
- 三十二、SAP中定义选择屏幕
一.SAP中PARAMETERS表示选择屏幕,使用方法如下 二.运行代码 三.PA_CAR为我们选择的0017 四.点击执行之后,由于我们未在代码中触发相关的过滤功能,显示的表格为全部表格,效果如下
- 新手学Java,有哪些入门知识点?
很多小伙伴们在刚接触Java的时候,会有些迷茫,不知道该从哪里入手,不管是做前端还是后端,程序员都会用到JAVA,那该掌握哪些必要的基础知识呢.今天就跟大家分享新手学Java,有哪些入门知识点? 下面 ...
- 留学Essay写作常见谬误盘点
留学生在完成英语论文作业的时候总会出现各种各样的谬误,导致最后拿不到高分,甚至挂科,最终只得选择写作完成.本文小编为大家总结出我们留学生在essay写作中几个常见谬误,希望大家有则改之,无则加勉. E ...
- vue全家桶router、vuex、axios
main.js import Vue from 'vue' import App from './App' import router from './router' import store fro ...
- Node.js NPM 教程
NPM是Node.js的包(或模块)管理器,是Node.js应用程序开发的核心. www.npmjs.com上有海量的Node.js包,供免费下载使用. 当安装Node.js时,NPM程序会被同时安装 ...
- NiFi之Processor配置
Processor(处理器)之配置 选择一个Processor,比如ExecuteSQL,从它的名字可以看出该处理器的功能就是去执行一个sql(当然是执行的该sql必须要有返回值的),下面就以Exec ...
- Apache NiFi Processor实战
1 前言 Apache NiFi是什么?NiFi官网给出如下解释:“一个易用.强大.可靠的数据处理与分发系统”.通俗的来说,即Apache NiFi 是一个易于使用.功能强大而且可靠的数据处理和分发系 ...