return这个用在循环语句中,是直接结束了定义了的这个方法。
包的命名也全部都是小写。
关键字也全部都是小写。
变量的命名是不能是数字开头。
如果把关键字大写了,那么关键字就不是关键字了,可以当做变量名来使用。
常量:全部的字母都是大写。
类和接口:每个单词的首字母大写
注释很多有时比代码还多。
你自己写的时间长了你可能就看不懂 。
classs ZhiShiDemo {
//main方法是主方法
//是程序的入口
//被jvm调用
public static void main (String () args ){
System.out.println(“这是注释”);
}
}
1.注释可以帮助我们调试代码
2. 可以提高程序阅读性
分析:
要写一个java程序,首先要定一个类
要把数据输出 ,必须要让程序能够独立运行,而程序的独立运行,必须定义一个方法。
把数据输出在控制台上必须使用输出语句。
实现: main方法的格式是固定的
class Demo2
public staic void main(String [] args ){
System.out.println ( “里面的天空”);
}
A 字面值常量 5种
B 自定义常量(后面讲)
字面值常量 :
字符串常量 “hello”
整数常量 144
小数常量 34.32
字符常量 ‘a’
布尔常量 true false
空常量 null
class ConstantDemo{
public static void main (String [] args ){
//字符常量输出
System.out.pirntln (‘a’);
}
}
1byte = 8bit 1字体等于8位
1k= 1024byte
1m=1024k
1g = 1024m
1t = 1024g
把二进制数 从右开始每3位一组,左边不够0补齐。转化为10进制数,然后把这些十进制数连接在一起就是8进制的数
十六进制:从右4位一组
规则:进制越大,表达形式越短。
2进制 :0b开头
8进制: 0开头
十六进制 0x开头
class JinZhiDenmo{
public static void main (String [] args ){
System.out.println( 13 ); // 结果是:13
System.out.println( 0b100 );// 结果是:4
System.out.println( 0100 ); // 结果是:64
System.out.println( 0x100 ); //结果是:256
}
}
所有的运算都是补码进行运算的
原码反码补码
7 --7
111
正数的原码反码补码都一样
7
符号位 数值位
原码 : 0 0000111
反码: 0 0000111
补码: 0 0000111
负数的补码,符号位不变,数值位0变1 , 1 变0
反码是补码 +1
-7
符号位 数值位
原码: 1 0000111
反码: 1 1111000
补码: 0 1111001
如果第八位也占满了,那就用2个byte .来表示正负号。
长整形:long j =1000000000000000; 会报错,因为默认是int型,而这个数超过了int 型。
所以要在数的后面标记一下才可以。 long j =10000000000000000L
强制类型转换是用在变量相加中,让大的转给小的。
1.7.1do while 循环是肯定要执行语句体1次的。
import java.util.Scanner;
public class DemoDoWhile {
private static Scanner sc ;
public static void main (String [] args) {
sc = new Scanner(System.in);
System.out.println("请输入一个数字");
//把键盘扫描的第一个数字,赋值给a
int a = sc.nextInt();
//把键盘扫描的第二个数字,赋值给b
int b = sc.nextInt();
//do while 求和
int sum = 0 ;
do {
sum += a;
a++;
}
while (a<=b);
System.out.println(sum);
}
}
do就是开始执行,然后再去判断是不是符合条件。符合条件了就输出,不符合就继续执行。
while
1.8folat型在内存中的储存方式
1.8.1网上找的解释
无论是单精度还是双精度在存储中都分为三个部分:
符号位(Sign) :0代表正,1代表为负
指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储
尾数部分(Mantissa):尾数部分
其中float的存储方式如下图所示:
符号位 指数位 尾数位
0/1 实际指数+127 底数位去掉整数部分的 1
1 8 23
120.5用二进制表示为:1110110.1 。0.5x2=1 ,所以第一位是1,而且没有小数部分了,所以小数部分最终写法还是 1 。
示例:
17.625
整数部分17 二进制:10001
小数部分0.625 二进制:101 (从上到下)
0.625 * 2 = 1.25 整数部分是1 。第1位是:1
(此时变为0.25): 0.25 * 2 = 0.5 整数部分是1 。 第2位是:0
0.5 * 2 = 1 整数部分是1 。第3位是:1
1110110.1可以表示为1.11011012^6 ,任何一个数都的科学计数法表示都为1.xxx 2^n, 尾数部分就可以表示为xxxx,第一位都是1嘛,干嘛还要表示呀?将小数点前面的1省略,所以23bit的尾数部分,可以表示的精度却变成了 24bit,而对于指数部分,因为指数可正可负,8位的指数位能表示的指数范围就应该为:-127-128了,所以指数部分的存储采用移位存储,存储的数据为元数据+127,
下面说下取值范围和精度:
取值范围看指数部分:
float是有符号型,其中,8位指数位,28=(-128—127),因此实际的范围是-2128—2^127,约为-3.4E38—3.4E38
同理double范围约是-1.7E308—1.7E308,
精度是看尾数部分:
float尾数位23位,2^23=8.3E6,7位,所以不同的编译器规定不同,有些是7位,有些8位
double尾数52位,2^52=4.5E15,15位,所以double的有效位数是15位
1.8.2黑马解释
float类型数字在计算机中用4个字节存储。遵循IEEE-754格式标准:
一个浮点数有2部分组成:底数m和指数e
底数部分 使用二进制数来表示此浮点数的实际值
指数部分 占用8bit的二进制数,可表示数值范围为0-255
但是指数可正可负,所以,IEEE规定,此处算出的次方必须减去127才是真正的指数。
所以,float类型的指数可从-126到128
底数部分实际是占用24bit的一个值,但是最高位始终为1,所以,最高位省去不存储,在存储中占23bit
科学计数法。
格式:
SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
S表示浮点数正负
E指数加上127后的值得二进制数据
M底数
举例:
17.625在内存中的存储
首先要把17.625换算成二进制:10001.101
整数部分,除以2,直到商为0,余数反转。
小数部分,乘以2,直到乘位0,进位顺序取。
在将10001.101右移,直到小数点前只剩1位:
1.0001101 * 2^4 因为右移动了四位
这个时候,我们的底数和指数就出来了
底数:因为小数点前必为1,所以IEEE规定只记录小数点后的就好。所以,此处的底数为:0001101
指数:实际为4,必须加上127(转出的时候,减去127),所以为131。也就是10000011
符号部分是整数,所以是0
综上所述,17.625在内存中的存储格式是:
01000001 10001101 00000000 00000000
换算回去:自己做。