20190918Java课堂记录
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};
s 和 t 的值不同,s == t 的结果为 false
Size 不是基本类型,返回 false
枚举类型值相等即为一个变量
values() 为返回所有值
总结:枚举enum是一种特殊的类(还是类),使用枚举可以很方便的定义常量
一个常用的场合就是switch语句中,使用枚举来进行判断
注:因为是常量,所以一般都是全大写
使用枚举的好处就是可以把变量的范围限定在几个以内,在使用 switch 的时候就不用担心有其他值的情况
2. TestDouble.java
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));
}
}
运行结果:
0.05 + 0.01 = 0.060000000000000005
1.0 - 0.42 = 0.5800000000000001
4.015 * 100 = 401.49999999999994
123.3 / 100 = 1.2329999999999999
结论:使用double类型的数值进行计算, 其结果是不精确的。
解决方法——使用BigDecimal类
import java.math.BigDecimal; public class TestBigDecimal
{
public static void main(String[] args)
{
BigDecimal f1 = new BigDecimal("0.05");
BigDecimal f2 = BigDecimal.valueOf(0.01);
BigDecimal f3 = new BigDecimal(0.05);
System.out.println("下面使用String作为BigDecimal构造器参数的计算结果:");
System.out.println("0.05 + 0.01 = " + f1.add(f2));
System.out.println("0.05 - 0.01 = " + f1.subtract(f2));
System.out.println("0.05 * 0.01 = " + f1.multiply(f2));
System.out.println("0.05 / 0.01 = " + f1.divide(f2));
System.out.println("下面使用double作为BigDecimal构造器参数的计算结果:");
System.out.println("0.05 + 0.01 = " + f3.add(f2));
System.out.println("0.05 - 0.01 = " + f3.subtract(f2));
System.out.println("0.05 * 0.01 = " + f3.multiply(f2));
System.out.println("0.05 / 0.01 = " + f3.divide(f2));
}
}
TestBigDecimal
运行结果:
下面使用String作为BigDecimal构造器参数的计算结果:
0.05 + 0.01 = 0.06
0.05 - 0.01 = 0.04
0.05 * 0.01 = 0.0005
0.05 / 0.01 = 5
下面使用double作为BigDecimal构造器参数的计算结果:
0.05 + 0.01 = 0.06000000000000000277555756156289135105907917022705078125
0.05 - 0.01 = 0.04000000000000000277555756156289135105907917022705078125
0.05 * 0.01 = 0.0005000000000000000277555756156289135105907917022705078125
0.05 / 0.01 = 5.000000000000000277555756156289135105907917022705078125
3.
int X=100;
int Y=200;
System.out.println("X+Y="+X+Y);
System.out.println(X+Y+"=X+Y");
使用运算符 + 连接字面量“The sum is” 和计算结果 sum将String 和其它数据类型相加,结果是一个新的String
4.
自动生成 n 道小学四则运算题目的 “软件”
//信1805-2孙超凡20183558
import java.util.Scanner; public class Mathtest{
public static void main(String[] args)
{
int[] chucun1= new int [1001];
int[] chucun2= new int [1001];
int[] chucun3= new int [1001];
int[] chucun4= new int [1001];
int[] chucun5= new int [1001];
int[] chucun6= new int [1001];
int[] chucun7= new int [1001];
int[] chucun8= new int [1001];
int max=100,min=1;
int ran1 = (int) (Math.random()*(max-min)+min);
int ran2=(int) (Math.random()*(max-min)+min);
int zhuangtai=0;
char fuhao[]={'+','+','-','*','/'};
max=4;min=1;
int ran3=(int) (Math.random()*(max-min)+min);
int shuliang;
System.out.println("enter the number1:");
Scanner scan=new Scanner(System.in);
shuliang=scan.nextInt();
System.out.println("enter the number2:");
int hang=scan.nextInt();
int p=0;
for(int i=1;i<shuliang+1;++i)
{
++p;
max=100;min=1;
ran1 = (int) (Math.random()*(max-min)+min);
ran2=(int) (Math.random()*(max-min)+min);
max=5;min=1;
ran3=(int) (Math.random()*(max-min)+min); switch(ran3){
case 1:{max=100;min=1;
chucun5[i]=ran1;
chucun6[i]=ran2;
for(int m=0;m<i;++m){
if(ran1==chucun5[m]||ran2==chucun6[m]){
zhuangtai=1;
break;}
zhuangtai=0;
} while(zhuangtai==1){
ran1 = (int) (Math.random()*(max-min)+min);
ran2=(int) (Math.random()*(max-min)+min);
chucun5[i]=ran1;
chucun6[i]=ran2;
for(int m=0;m<i;++m){
if(ran1==chucun5[m]||ran2==chucun6[m]){ zhuangtai=1;
break;}
zhuangtai=0;}
}
System.out.println(i+","+ran1+" + "+ran2+" =");
break;
}
case 2:{
max=100;min=1;
chucun1[i]=ran1;
chucun2[i]=ran2;
for(int m=0;m<i;++m){
if(ran1==chucun1[m]||ran2==chucun2[m]){
zhuangtai=1;
break;}
zhuangtai=0;
}
while(zhuangtai==1){
ran1 = (int) (Math.random()*(max-min)+min);
ran2=(int) (Math.random()*(max-min)+min);
chucun1[i]=ran1;
chucun2[i]=ran2;
for(int m=0;m<i;++m){
if(ran1==chucun1[m]||ran2==chucun2[m]){
zhuangtai=1;
break;}
zhuangtai=0;}
}
if(ran1>ran2)System.out.println(i+","+ran1+" - "+ran2+" =");
else System.out.println(i+","+ran2+" - "+ran1+" =");
break;
}
case 3:
{
max=100;min=1;
ran1 = (int) (Math.random()*(max-min)+min);
ran2=(int) (Math.random()*(max-min)+min);
chucun3[i]=ran1;
chucun4[i]=ran2; while((ran1*ran2)>=100){
ran1 = (int) (Math.random()*(max-min)+min);
ran2=(int) (Math.random()*(max-min)+min);
chucun3[i]=ran1;
chucun4[i]=ran2; }
for(int m=0;m<i;++m){
if(ran1==chucun3[m]||ran2==chucun4[m]){
zhuangtai=1;
break;}
zhuangtai=0;
}
while(zhuangtai==1&&(ran1*ran2)>=100){
ran1 = (int) (Math.random()*(max-min)+min);
ran2=(int) (Math.random()*(max-min)+min);
chucun3[i]=ran1;
chucun4[i]=ran2;
for(int m=0;m<i;++m){
if(ran1==chucun3[m]||ran2==chucun4[m]){
zhuangtai=1;
break;} zhuangtai=0;} }
System.out.println(i+","+ran1+" * "+ran2+" =");
max=100;min=1;
ran1 = (int) (Math.random()*(max-min)+min);
ran2=(int) (Math.random()*(max-min)+min);
break;
}
case 4:{
max=100;
if(ran1>ran2){
float ran=ran1/ran2;
while(ran1%ran2!=0){
ran1 = (int) (Math.random()*(max-min)+min);
ran2=(int) (Math.random()*(max-min)+min); } chucun7[i]=ran1;
chucun8[i]=ran2;
for(int m=0;m<i;++m){
if(ran1==chucun7[m]||ran2==chucun8[m]){
zhuangtai=1;
break;
}
zhuangtai=0;
} while(zhuangtai==1){
ran1 = (int) (Math.random()*(max-min)+min);
ran2= (int) (Math.random()*(max-min)+min);
ran=ran1/ran2;
while(ran1%ran2!=0){
ran1 = (int) (Math.random()*(max-min)+min);
ran2=(int) (Math.random()*(max-min)+min); } chucun7[i]=ran1;
chucun8[i]=ran2;
for(int m=0;m<i;++m){
if(ran1==chucun7[m]||ran2==chucun8[m]){
zhuangtai=1;
break;}
zhuangtai=0;}
// System.out.println(zhuangtai+"!!");
} System.out.println(i+","+ran1+" / "+ran2+" ="); break;
}
else {
int t=ran2;
ran2=ran1;
ran1=t;
float ran=ran1/ran2;
while(ran1%ran2!=0){
ran1 = (int) (Math.random()*(max-min)+min);
ran2=(int) (Math.random()*(max-min)+min); }
chucun7[i]=ran1;
chucun8[i]=ran2;
for(int m=0;m<i;++m){
if(ran1==chucun7[m]||ran2==chucun8[m]){
zhuangtai=1;
break;}
zhuangtai=0;
} while(zhuangtai==1){
ran1 = (int) (Math.random()*(max-min)+min);
ran2=(int) (Math.random()*(max-min)+min);
ran=ran1/ran2;
while(ran1%ran2!=0){
ran1 = (int) (Math.random()*(max-min)+min);
ran2=(int) (Math.random()*(max-min)+min); }
chucun7[i]=ran1;
chucun8[i]=ran2;
for(int m=0;m<i;++m){
if(ran1==chucun7[m]||ran2==chucun8[m]){ zhuangtai=1;
break;
}
zhuangtai=0;
}
// System.out.println(zhuangtai+"??");
} System.out.println(i+","+ran1+" / "+ran2+" ="); break; }
}
}
if(p==hang){
System.out.println("\n");
p=0;
} }
} }//定制,不能重复
Mathtest
运行结果

实现功能:
自定义题目总数和组数
算式不重复
乘法结果 < 100
除法均为整除
5. 计算机储存数据最终都是转换成二进制数字进行储存,而计算机进行简单的运算时,也是通过二进制下的数字进行计算的。
比如4Bytes的int类型变量储存了十进制的11,那么在内存中它的存在形式是00000000 00000000 00000000 00001011,那么如果它储存的是
十进制的-11,那么它的存在形式是10000000 00000000 00000000 00001011,这个数就叫二进制原码。对于一个正数,其二进制反码和原码
相同;对于一个负数,其二进制反码即其二进制原码除了符号位各位取反后的结果。补码的定义和反码很像,对于一个正数,它的二进制补
码是它的二进制原码;对于一个负数,它的二进制补码是它的二进制反码再加上1。


如图所示,Java是用采用补码表示的
20190918Java课堂记录的更多相关文章
- Java学习笔记二--API课堂记录
JavaSE课堂记录(二) 第一节课 方法的重载:方法名相同,参数列表不同 方法的重写:方法名,参数列表相同 两同:方法名相同,参数列表相同 两小:访问权限小与等于父类,返回值类型小于等于父类(返回值 ...
- [C++讨论课] 课堂记录(一)
今天第一次参加c++讨论课,记录下了各组同学的展示的问题或者解决方法,也有一些知识点上的内容,供以后复习参考. 1.常量指针和指针常量问题 常量指针:指向常量的指针,例如const int *p = ...
- 20191102Java课堂记录
1. import javax.swing.*; class AboutException { public static void main(String[] a) { int i=1, j=0, ...
- 20191014Java课堂记录
1. Java字段初始化的规律 首先执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”. 其次执行类的构造函数. 类的初始化块不接收任何的参数,而且只要一创建类的对象,它 ...
- 20190925Java课堂记录(二)
1. testrandom public class test2{ public static void main(String[] args) { int[] n=new int [1001]; n ...
- 20190925Java课堂记录(一)
判断字符串是否回文 设计思想 利用递归,每次返回长度减二的字符串,最终返回结果 源程序代码 import java.util.Scanner; public class palindrome { st ...
- JavaWeb 学习009-4个页面,5条sql语句(添加、查看、修改、删除)
===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+++++++++ 2016-12-3------ ...
- 机器学习笔记(三)Logistic回归模型
Logistic回归模型 1. 模型简介: 线性回归往往并不能很好地解决分类问题,所以我们引出Logistic回归算法,算法的输出值或者说预测值一直介于0和1,虽然算法的名字有“回归”二字,但实际上L ...
- Cs231n课堂内容记录-Lecture 4-Part1 反向传播及神经网络
反向传播 课程内容记录:https://zhuanlan.zhihu.com/p/21407711?refer=intelligentunit 雅克比矩阵(Jacobian matrix) 参见ht ...
随机推荐
- 【js】react-native Could not find iPhone 6 simulator 和 Entry, ":CFBundleIdentifier", Does Not Exist 两种报错解决办法
一.在运行rn app应用时,react-native run:ios 报错出现 Could not find iPhone 6 simulator 解决办法: 1.react-native r ...
- H3C TFTP协议介绍
- centos7 安装R和RstudioServer版
参考: http://www.cnblogs.com/inspursu/p/4275701.html http://blog.csdn.net/u010022051/article/details/5 ...
- linux 内核定时器的实现
为了使用它们, 尽管你不会需要知道内核定时器如何实现, 这个实现是有趣的, 并且值得 看一下它们的内部. 定时器的实现被设计来符合下列要求和假设: 定时器管理必须尽可能简化. 设计应当随着激活的定时器 ...
- JavaScript 面向对象的拖拽
一.body <div id="box"></div> 二.css <style> #box { position: abaolute; top ...
- If条件语句实战
1.If条件判断语句 通常以if开头,fi结尾.也可加入else或者elif进行多条件的判断,if表达式如下: if (表达式) 语句1 else 语句2 fi 2.If常见判断逻辑运算符详解: -f ...
- 解决Win10电脑右下角的“激活windows转到电脑设置”的水印的方法
Win10正式版的用户反馈新系统在使用一段时候后,自己电脑桌面右下角就突然出现了“激活windows10转到设置以激活windows”的水印字样.这是怎么回事呢?下面,我就向大家分享win10电脑右下 ...
- 【题解】LOJ2759. 「JOI 2014 Final」飞天鼠(最短路)
[题解]LOJ2759. 「JOI 2014 Final」飞天鼠(最短路) 考虑最终答案的构成,一定是由很多飞行+一些上升+一些下降构成. 由于在任何一个点上升或者下降代价是一样的,所以: 对于上升操 ...
- 洛谷$P5366\ [SNOI2017]$遗失的答案 数论+$dp$
正解:数论$dp$ 解题报告: 传送门$QwQ$ 考虑先质因数分解.所以$G$就相当于所有系数取$min$,$L$就相当于所有系数取$max$ 这时候考虑,因为数据范围是$1e8$,$1e8$内最多有 ...
- 1060 爱丁顿数 (25 分)C语言
英国天文学家爱丁顿很喜欢骑车.据说他为了炫耀自己的骑车功力,还定义了一个"爱丁顿数" E ,即满足有 E 天骑车超过 E 英里的最大整数 E.据说爱丁顿自己的 E 等于87. 现给 ...