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中的常用语句 ...
随机推荐
- springboot - 返回xml error 从自定义的 ErrorController
1.概览 2.在<springboot - 返回JSON error 从自定义的 ErrorController>基础上,做如下调整: 1).新增Attribute类和Error类 pac ...
- GeneWise
GeneWise是用于将蛋白质序列进行同源预测的软件
- Golang的常量定义及使用案例
Golang的常量定义及使用案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常量的定义 package main import ( "fmt" ) fu ...
- python——字符输出ASCII码
总是忘记事,赶紧记下来,Python字符转成ASCII需要用到一个函数ord # 用户输入字符 ch = input("请输入一个字符: ") # 用户输入ASCII码,并将输入的 ...
- Oracle 序列(查询序列的值,修改序列的值)
1.序列的语法形式 create sequence 序列名 increment by n start with n maxvalue n | nomaxvalue minvalue n | nomin ...
- qt 中图表 QtCharts 的使用
要使用QtCharts 需要几个步骤: 1. pro 文件中 修改 QT += charts 2. 把 chart 相关的头文件放在 ui 相关的头文件上面,否则会导致 编译错误,找不到 chartV ...
- Codeforces Round #585 (Div. 2) CF1215A~C
CF1215A. Yellow Cards简单的模拟,给定了黄票张数,判断最少和最多有多少人被罚下场. #include <bits/stdc++.h> using namespace s ...
- javascript 对象只读
var person = {}; Object.defineProperty(person, "name", { writable: false, value: "nic ...
- python --- excel文件处理
1.安装第三方库:openpyxl 2.操作示例 from openpyxl import load_workbook #.打开文件 file = load_workbook("test.x ...
- mnist数据集tensorflow实现
TensorFlow——CNN实现MNIST手写体识别 2019年04月08日 21:46:19 星空Ice_ 阅读数 83 文章目录 TensorFlowCNN实现MNIST 1,数据集 2,回 ...