LESSON FOUR:Java基础语法(上)

Java基础语法

注释

  • 单行注释:// 注释内容
  • 多行注释:/* 注释内容 */
  • 文档注释:/** 注释内容 */
/*        .---.        .-----------
*       /     \  __  /    ------
*      / /     \(  )/    -----
*     //   ' \/ `   ---
*     / // :    : ---
*   // /   /  /`    '--
*  //          //..\\
*         ====UU====UU====
*             '//||\\`
*               ''``
*/  
/*
*                    .-'-._
*                   /    e<
*               _.-''';  (
*     _______.-''-._.-'  /
*     ====---:_''-'     /  _  _     %%%%
*              '-=. .-'` _(_)(_)   %%|/%%%
*                _|_\_  (_)(_)(_) %%%%%%%%%%
*               //\\//\\//\\//\\//\\%/_%%%%%%%
*           ____\\//\\//\\//\\//\\// |__|/__%%%
*  ________(___  \\/\//\\//\\//\\//__//___%%%%%%%
*            / \  \_/ __ \___//------\--%%%%%%
*  _________/   \____/  \____/\\%%%%%%%%%%%%
*                              \_-%%%%%%%%
*
*/

标识符

关键字

  • Java所有的组成部分都需要名字;类名、变量名、方法名都被称为标识符;
abstract assert boolean break byte
case catch char class【类】 const
continue default do double else
enum extends final finally float
for goto if implements import
instanceof int interface long native
new package private protected public
return strictfp short static super
switch synchronized this throw throws
transient try void volatile while
  • 所有的标识符都以字母、美元符$、下划线_开始;
  • 首字符之后可以是字母、美元符、下划线或数字的任意字符组合;
  • 不能用关键词作为变量名或方法名
  • 标识符是大小写敏感的

数据类型

  • 强类型语言:要求变量的使用严格符合规定;所有变量都必须被定义后才能使用;
    安全性高、速度慢;
    • String=字符串;可以通过""来进行输入;
    • 10≠字符串=数字;可以用 int 来进行输入;
public class test01 {
    public static void main(String[] args) {
        String a ="9";
        int num =10;
        System.out.println(a);
        System.out.println(num);
    }
}
  • 变量:可以变化的量;Java作为强类型语言,每个变量都必须声明其类型;
    • 每个变量都有类型,可以是基本类型也可以是引用类型;
    • 变量名的标识符需要合法;
    • 变量声明亦是一条完整的语句,因此每一个声明都必须以分号结束。
type varName [=value] [{,varName[=value]}];
//数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量。
  • 基本类型(primitive type):

    • 数值类型:

      • 整数类型(字节范围):byte;short;int;long;1——2——4——8

      • 浮点类型(小数):float;double;4——8

      • 字符类型:char;2

    • boolean类型:占1位,其值只有true和false两个;

  • 引用类型(reference type):

    • 接口
    • 数组

什么是字节?

  1. 位(bit):是计算机内部数据储存的最小单位;
  2. 字节(byte):是计算机中数据处理的基本单位,习惯用B表示;
  3. 1B(byte,字节)=8bit(位);
  4. 字符:是指计算机中使用的字母、数字、字和符号;
  • 电脑的32位和64位的区别?寻址能力、支持内存、软件匹配;
  • 1024B=1KB;1024KB=1M;1024M=1G;1024G=1TB

数据类型扩展

public class Demo {
    public static void main(String[] args) {
        //整数扩展 进制 二进制0b 十进制 八进制0 十六进制0x
        int i = 10;
        int i2 = 010;
        int i3 = 0x10;

        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        
        System.out.println("================================");
        //=========================================================
        //浮点数扩展?银行业务怎么表示?
        //=========================================================
        //BigDeciaml
        //float 有限 离散  舍入误差  大约  接近但不等于;
        //暂时不太理解,留给之后学习完回来再看看;
        //double
        /*
        最好完全避免使用浮点数进行比较;
       	最好完全避免使用浮点数进行比较;
      	最好完全避免使用浮点数进行比较;
      	*/

        float f = 0.1f;
        double d = 1.0/10;
        System.out.println(f==d);//false

        float d1 = 56565656555541412f;
        float d2 = d1 + 1;
        System.out.println(d1==d2);//true
        
        System.out.println("================================");
        //===============================================================
        //字符扩展?
        //===============================================================

        char c1 = 'a';
        char c2 = '中';

        System.out.println(c1);
        System.out.println((int)c1);//强制转换;
        System.out.println(c2);
        System.out.println((int)c2);//强制转换;

        //所有的字符本质还是数字;
        //char涉及编码问题:Unicode 表:( 97 = a ;65 = A;) 2字节 65536 Excel 2 16 =65536
        //U0000  UFFFF:Unicode表的范围?
       
        char c3 = '\u0061';
        System.out.println(c3);//a
        
        System.out.println("================================");

        //转义字符——自己测试不同用法;
        //\t 制表符
        //\n 换行
	//\\ 反斜杠字符
        //\r 回车
        //\b 退格
        //\f 换页
        
        System.out.println("Hello,world");
        System.out.println("Hello\tworld");
        System.out.println("Hello\nworld");
        
        System.out.println("================================");

        String sa = new String("Hello World");
        String sd = new String("Hello World");
        System.out.println(sa==sd);//false

        String sc ="Hello World";
        String sb ="Hello World";
        System.out.println(sc==sb);//true
        System.out.println("================================");
        //对象  从内存分析

        //布尔值扩展
        boolean flag = true;
            if (flag==true){}//新手
            //if(flag){}老手
            //Less is More! 代码要精简易读;
    }
}

进制的概念(补基础)

  • 进制作为计数方法,人类习惯使用十进制——0-9;
  • 转进制:
    • 十进制转进N进制;
    • 除以N,取余数,倒排余数;
      • 除不尽,商为零,余为一
//将25转换为二进制数
//25÷2=12 余数1
//12÷2=6 余数0
//6÷2=3 余数0
//3÷2=1 余数1
//1÷2=0 余数1
//所以25=(11001)2
//同理,把十进制数转换为十六进制数时,将基数2转换成16就可以了.
//将25转换为十六进制数
//25÷16=1 余数9
//1÷16=0 余数1
//所以25=(19)16
  • 转10进制
    • 倒着乘权重,相加;
//10101————>1X2的0次方+0X2的1次方+1X2的2次方+0X2的3次方+1X2的4次方
//10101————>1+0+4+0+16=21
//25————>5X8的0次方+2X8的1次方
//25————>5+16=21
//15————>5X16的0次方+1X16的1次方
//15————>5+16=21
int a = 010;//8进制的10
int b = 0xA1;
Printf("a=%d,b=%d\n",a,b);
  • HEX=16进制: 3E8; 15
  • DEC =10进制:1,000; 21
  • OCT=8进制: 1 750;25
  • BIN=2进制: 00)11 1110 1000;0001 0101
    • 1字节8个位

二进制

  • 只有0与1,逢2进1;

  • 0——1=1——10=2——11=3——100=4——101=5——>1010=6?;1011=7?

  • 110=6;111=7;1000=8;1111=15;11111=31

    • 简易理解(抛开上面的转换方法,单纯理解2进制的数值本身):
      现有位数中还有0则进1,没有0则“清空”后以1位开头在后面加0;
      例如111到1000,1111到10000;
      而101到110是从5到6,逢二进一,第三位的1进到第二位;111到1000是从7到8,逢二进一,但没有可以进的位数,因此变为1000;11110=30、11111=31、100000=32;
      1——10——11——100——101——110——111——1000——1001——1010——1011——1100——1101——1110——1111——10000——10001——10010——10011——10110——10111——11000——11001——11010——11011——11110——11111——100000

八进制

  • 0-8,逢8进1;10=9?10=8

十六进制

  • 0-9+A-F,逢16进1;
posted @ 2023-01-27 12:37  Barotrauma  阅读(24)  评论(0编辑  收藏  举报