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中的常用语句 ...
随机推荐
- use matplotlib to drew a table
$sudo apt-get install python3-matplotlib gyf@gyf-VirtualBox:~$ python3Python 3.6.9 (default, Nov 7 ...
- 浅析Java NIO
浅析Java NIO 前言 在说NIO之前,先来说说IO的读写原理.我们都知道Java中的IO流可以分为网络IO流和文件IO流,前者在网络中使用,后者在操作文件时使用.但实际上两种流区别并不是太大 ...
- HDU - 1166 敌兵布阵 (线段树---点修改)
题意: 1.Add i j,i和j为正整数,表示第i个营地增加j个人(j不超过30) 2.Sub i j ,i和j为正整数,表示第i个营地减少j个人(j不超过30); 3.Query i j ,i和j ...
- 51nod 1206:Picture 求覆盖周长
1206 Picture 题目来源: IOI 1998 基准时间限制:2 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 收藏 关注 给出平面上的N个矩形(矩形的边平行于X轴和 ...
- Andriod studio 汉化教程
1.找到安装目录,D:\Program Files\Android\Android Studio\lib,先保存resources_en,并且把它的名字改为resources_cn.jar 2.下载汉 ...
- 地图js及json包
echarts github上的地图js及json包:https://github.com/apache/incubator-echarts/tree/master/map 上面链接没有县及的地图js ...
- 六十八、SAP中内表插入的三种方法之二,COLLECT的使用,用于计算数字字段之和
一.使用COLLECT时,如果关键字没有,那么插入,如果有则求所有关键字列的和,代码如下 二.sy-index在循环中,每次循环从1开始递增 三.查看T_DATA数据 四.如下 五.循环时候,我们查看 ...
- 146-PHP 使用<<<和HTML混编(二)
<?php $html=<<<HTM1 <title>PHP输出HTML代码</title> <body> <a href=#> ...
- Spring Cloud 支付宝支付的流程
沙箱环境又称沙盘,为了开发与调试所提供的环境,它与生产环境互相隔离,但具有生产环境几乎完全相同的功能蚂蚁金服开放平台——开发者中心1.https://openhome.alipay.com2.提供的调 ...
- idea新建maven web项目
一.新建maven web项目 二.配置服务器 三.测试运行