java知识点复习

一、java知识点复习。

return这个用在循环语句中,是直接结束了定义了的这个方法。

1.1命名规则

包的命名也全部都是小写。

关键字也全部都是小写。

变量的命名是不能是数字开头。
如果把关键字大写了,那么关键字就不是关键字了,可以当做变量名来使用。

常量:全部的字母都是大写。

类和接口:每个单词的首字母大写

1.2注释

注释很多有时比代码还多。
你自己写的时间长了你可能就看不懂 。

classs ZhiShiDemo {
//main方法是主方法
//是程序的入口
//被jvm调用
public static void main (String () args ){
System.out.println(“这是注释”);
}
}

1.2.1多行注释不能嵌套使用./* */

1.2.2单行注释是可以的。 //

1.2.3文档注释 被javadoc 工具解析生产一个说明书面向对象讲解。/** */。

1.2.4新学者,要先写注释后写代码。

1.注释可以帮助我们调试代码
2. 可以提高程序阅读性
分析:
要写一个java程序,首先要定一个类
要把数据输出 ,必须要让程序能够独立运行,而程序的独立运行,必须定义一个方法。
把数据输出在控制台上必须使用输出语句。
实现: main方法的格式是固定的

class Demo2
public staic void main(String  [] args ){
    System.out.println	( “里面的天空”);
}

1.3常量

A 字面值常量 5种
B 自定义常量(后面讲)

字面值常量 :
字符串常量 “hello”
整数常量 144
小数常量 34.32
字符常量 ‘a’
布尔常量 true false
空常量 null

class ConstantDemo{
public static void main (String [] args ){
//字符常量输出
System.out.pirntln (‘a’);
}
}

1.4二进制

1byte = 8bit 1字体等于8位
1k= 1024byte
1m=1024k
1g = 1024m
1t = 1024g

把二进制数 从右开始每3位一组,左边不够0补齐。转化为10进制数,然后把这些十进制数连接在一起就是8进制的数
十六进制:从右4位一组
规则:进制越大,表达形式越短。

1.5进制组成规则

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
}
}

1.6有符号的数据表示法

所有的运算都是补码进行运算的

原码反码补码
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循环体语句

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网上找的解释
无论是单精度还是双精度在存储中都分为三个部分:

  1. 符号位(Sign) :0代表正,1代表为负

  2. 指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储

  3. 尾数部分(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

换算回去:自己做。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值