一:运行代码,并分析结果

代码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语法基础和课后实践的更多相关文章

  1. 00-JAVA语法基础--课后作业

    题目:像二柱子那样,花20分钟写一个能自动生成30道小学四则运算题目的“软件”. package 课堂作业1; import java.util.Random; import java.util.Sc ...

  2. 00-JAVA语法基础--动手动脑

    1.运行EnumTest.java,并分析结果,得出结论. 其源代码以及运行结果截图如下: 枚举类型的常量以字符串的形式顺序储.源代码中s和t不是原始数据类型.getCLass():取得当前对象所属的 ...

  3. 00JAVA语法基础_动手动脑

    1.仔细阅读示例: EnumTest.java,运行它,分析运行结果? 枚举类型的使用是借助ENUM这样一个类,这个类是JAVA枚举类型的公共基本类.枚举目的就是要让某个变量的取值只能为若干固定值中的 ...

  4. Java语法基础动手动脑实践

    输出结果为: 0.05+0.01=0.0600000000000000051.0-0.42=0.58000000000000014.015*100401.49999999999994123.3/100 ...

  5. 00-JAVA语法基础

    1. 原码为数的二进制数,反码是将其二进制数每一位按位取反.补码则不同,正数的补码是其原码本身,负数的补码是其除符号位以外其他每一位按位取反再加一,符号位不变. int a=100; a=a>& ...

  6. 00JAVA语法基础_六位验证码 01

    在网上看了许多的源程序,涉及到的东西也不太一样,多了图形处理的,由于还没理解太明白,只是做了控制台. package Six_Code; import java.util.Random; import ...

  7. 00JAVA语法基础_四则运算 01

    自动生成30道四则运算的数学题,当前只是简单符合出题,答题和判断的代码,还没做要求,所以现在只是能随机生成三十道100以内的加减法和九九乘法表的乘除法 package Sizeyunsuan; /** ...

  8. 00JAVA语法基础 原码、反码、补码

    记得之前学C语言的时候老师课上讲过一些,不过当时觉得考试不考,也就上课听了下,下课也没怎么多做了解.这次,Java课上再次提出来了,自己也超越了些资料,对这三种概念算是有所初步了解. 1.原码 数据储 ...

  9. Lua脚本之语法基础快速入门

    要 1.基本数据类型 2.Lua中的常用语句结构以及函数 3.Lua中的常用语句结构介绍 4.Lua中的库函数 目录[-] 一.基本数据类型 二.Lua中的常用语句结构以及函数 1.Lua中的常用语句 ...

随机推荐

  1. springboot - 返回xml error 从自定义的 ErrorController

    1.概览 2.在<springboot - 返回JSON error 从自定义的 ErrorController>基础上,做如下调整: 1).新增Attribute类和Error类 pac ...

  2. GeneWise

    GeneWise是用于将蛋白质序列进行同源预测的软件

  3. Golang的常量定义及使用案例

    Golang的常量定义及使用案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常量的定义 package main import ( "fmt" ) fu ...

  4. python——字符输出ASCII码

    总是忘记事,赶紧记下来,Python字符转成ASCII需要用到一个函数ord # 用户输入字符 ch = input("请输入一个字符: ") # 用户输入ASCII码,并将输入的 ...

  5. Oracle 序列(查询序列的值,修改序列的值)

    1.序列的语法形式 create sequence 序列名 increment by n start with n maxvalue n | nomaxvalue minvalue n | nomin ...

  6. qt 中图表 QtCharts 的使用

    要使用QtCharts 需要几个步骤: 1. pro 文件中 修改 QT += charts 2. 把 chart 相关的头文件放在 ui 相关的头文件上面,否则会导致 编译错误,找不到 chartV ...

  7. Codeforces Round #585 (Div. 2) CF1215A~C

    CF1215A. Yellow Cards简单的模拟,给定了黄票张数,判断最少和最多有多少人被罚下场. #include <bits/stdc++.h> using namespace s ...

  8. javascript 对象只读

    var person = {}; Object.defineProperty(person, "name", { writable: false, value: "nic ...

  9. python --- excel文件处理

    1.安装第三方库:openpyxl 2.操作示例 from openpyxl import load_workbook #.打开文件 file = load_workbook("test.x ...

  10. mnist数据集tensorflow实现

    TensorFlow——CNN实现MNIST手写体识别 2019年04月08日 21:46:19 星空Ice_ 阅读数 83   文章目录 TensorFlowCNN实现MNIST 1,数据集 2,回 ...