本文最后更新于:2020年7月10日 下午

这是我的Java学习第二课

第一节 关键字

  • 高级语言有共性
  • system.out.print中system是已存在类,属于jdk自带的。
  • 关键字都是小写,类名要求第一个字母大写,每个单词首字母都要大写。这是书写规范。

第二节 标识符

  • 在程序中自定义的一些名称
  • 由26个英文字母大小写,数字,_ $组成
  • 定义规则

    1. 数字不可以开头
    2. 不可以使用关键字
  • Java中严格区分大小写

  • 为了提高阅读性,要尽量有意义
class Demo
{
    public static void main(String[] args)
    {
    }
}

在这个代码中main标识符,但是是一个固定的标识符.

第三节 注释

单行注释:在要注释的内容前加上//
多行注释:在要注释的内容前和后分别加上/**/,多行注释中不可以嵌套多行注释。
文档注释:在要注释的内容前后分别加上/***/
文档注释与多行注释的区别:文档注释可由jdk中的javadoc工具从.java文件中提取出来。
用处

  • 注解说明
  • 调试程序,缩小错误范围
    :注释不会参加编译。

第四节 注释的应用

  • 理清思路

第五节 常量

  • 整数常量 所有整数
  • 二进制: 0,1.满2进1
    • 八进制:0-7,满8进1,用0开头.方便区分
    • 十进制:0-9,满10进1.
    • 十六进制:0-9,A-F,满16进1.用0x开头.方便区分
  • 小数常量 所有小数

  • 布尔值 true和false

  • 字符常量 数字0-9,字母和符号。必须用''标识

  • 字符串常量 要用''标识

  • null常量 只有一个值null


第六节 进制的转换

  • Byte 字节,1B=8b

  • bit

B与bit
数据存储是以“字节”(Byte)为单位,数据传输大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位。
B与iB
1KiB(Kibibyte)=1024byte
1KB(Kilobyte)=1000byte
1MiB(Mebibyte)=1048576byte
1MB(Megabyte)=1000000byte
硬盘生产商是以GB(十进制,即10的3次方=1000,如1MB=1000KB)计算的,而电脑(操作系统)是以GiB(2进制,即2的10次方, 如1MiB=1024KiB)计算的,但是国内用户一般理解为1MiB=1M=1024 KB, 所以为了便于中文化的理解,翻译MiB为MB也是可以的。
同样根据硬盘厂商与用户对于1MB大小的不同理解,所以好多160G的硬盘实际容量按计算机实际的1MiB=1024KB算都不到160G,这也可以解释为什么新买的硬盘“缺斤短两”并没有它所标示的那么大。
———百度百科


第七节 进制的转换

可以看出每个十进制数都可以表示为每位上的数与10的相应次方之和

二进制同理,记得要从后面开始写,首位是零位

倒数第七位 倒数第六位 倒数第五位 倒数第四位 倒数第三位 倒数第二位 倒数第一位
0 1 0 1 0 1 1
64 32 16 8 4 2 1

因为0与任何数的乘积都为零,所以只需将1所对应的数加起来就行.

因为二进制中三位数中最大数111等于7,所以将二进制数三个三个分开,不足的话前面补零,然后把每三位的十进制数连接起来,就是八进制数.例如:

记得八进制前面要带零.同理,四位四位算就是十六进制.

这里再放一个高中数学必修三的进制转换课程,资源来自乐乐课堂,侵删.

第八节 负数的进制

第九节 二进制的四则运算

第十节 变量

概念

内存中的一个存储区域>
该区域有自己的名称(变量名)和类型(数据类型)
可以变化,用来储存数据

类型

graph LR
A[类型] -->B[引用数据]
	B -->B1[class]
	B -->B2[interface接口]
	B -->B3[数组]
A -->C[基本数据]
	C -->C1[数值型]
		C1 -->D1["整数类型: byte short int(默认) long"]
		C1 -->D2["浮点类型: float double(默认)"]
	C -->C2[字符型: char]
	C -->C3[布尔型: true false]

整数类型对比

类型 bit Byte 取值范围
byte 8 1 -128~127
short 16 2 -32768~32767
int 32 4 -2147483648~2147483647
long 64 8 非常大~

浮点类型对比

类型 bit 取值范围
float(单精度) 32 小,,,,
double(双精度) 64 大,,,

注意

  1. 定义long型变量时,要在数据后加上L.但是定义小数据时可以不加.为了规范,加上.
  2. 定义float型变量时,要在数据后面加上f.
  3. 利用{ }可以定义变量的作用域.
  4. 运算顺序是从右到左,例如x=x+5意为将x的值加上5再赋值给x.

自动类型提升与强制转化

class Demo{
 public static void main(String[] args){
     int a = 3;
     byte b =5 ;
     a = a+b; 
     /*数据类型不一样,但是可以相加,原理是会自动将byte数据提升到int型.
     */
     byte c= 3;
     c = c+4;
     /*会报错,因为数字4默认是int型.
     强制类型转换:c = (byte)(c+4);
     */
 }
}

强制转换其它实例:

int a =(int)43.5;//此时a的值是43
long b = (long)453.6F;//此时b的值是453
int c = (int)'d';//此时c的值是100

字符类型运算过程

​ 计算机中有一个将二进制数据映射成字符的编码表,即ASCII编码表.但是ASCII中每个字符占7bit,所以只有英文和一些常见符号.后来有了支持中文的GB2312,GBK,UTF-8.其他编码表一般都兼容ASCII编码表

Unicode编码表:也叫统一码、万国码,Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。目前的Unicode字符分为17组编排,0x0000 至 0x10FFFF,每组称为平面(Plane),而每平面拥有65536个码位,共1114112个。然而目前只用了少数平面。UTF-8UTF-16UTF-32都是将数字转换到程序数据的编码方案。

正因如此,字符与数字之间有了一对一的映射,所以字符也可以参与数字运算.

类型运算细节

1. 实例一

byte a = 0;
a=4+5;
System.out.println(a); //控制台输出9
byte b=0;
byte b1=4;
byte b2=5;
b=b1+b2;
System.out.println(b); //报错:可能损失精度

原因:对于byte a = 0;这句,右边的数字0默认是int型,在进行赋值时会先判断该数值是否在byte的取值范围内.如果在的话会自动进行数据类型转换;而对于b=b1+b2;由于等号右边有变量,无法进行判断,于是就会报错.

2. 实例二

int a1=5;
int a2=5;
int a=a1+a2;
System.out.println(a); //正常输出10.
int b1=Integer.MAX_VALUE ; //取得int最大值.
int b2=1;
int b=b1+b2;
System.out.println(b); //输出-2147483648

原因:由于数据默认是int型,所以int型数据运算时不需要检验.导致了有可能超出范围但是编译器不报错,输出了负数.

运算符

算数运算符 + - * / %

  • java运算是强类型语言,比如整数运算还是整数.

  • % —>取余,模运算.例如5%2=1.

  • -5%2=-1;5%-2=1;即a=bc+d,所以*如果被模数是负数,模运算得数也是负数.
  • + 可以用来计算和,自加和连接字符串.
  • 自加:++ 自减:--

自增自减 ++ --

  • ++写在前面和后面计算结果是不同的,++n表示先加1再引用n,n++表示先引用n再加1。不建议把++运算混入到常规运算中,容易自己把自己搞懵了1
  • b=a++表示a自增,把原来的值赋给b,b=++a表示a自增然后把值赋给b

赋值运算符 =

  • a+=2; //大概a=a+2;;类似的还有-= *= /=
short s = 3;
s+=4; //一次运算,会自动转换类型
s=s+4;//二次运算,会报错.不会自动转换

比较运算符 < > == != <= >= instanceof

逻辑运算符 & && | || ! ^

  • 用于连接两个Boolean型的表达式
  • & 非短路运算符,即会始终判断两个表达式: && 短路运算符,即当第一个表达式为false时不会去判断第二个表达式.| ||同理,|| :当第一个表达式为true时,不再去判断第二个运算符
  • ^ 异或运算符,当左右两个布尔值不同时为真,相同时为假:或者说当仅有一个true时为真.

位运算符 << >> >>> & | ^ ~

  • << 左移 >> 右移 >>> 无符号右移 &|^ 异或 ~ 反码
  • 数字A异或^另一个数B两次,结果还是A,可以用于加密.密码就是数字B
  • 3<<2表示3的二进制向左边移两位.3<<2相当于$3\times2^2$,
  • 当执行>>时,原数二进制最高数是啥就补啥.即正数还是正数,负数还是负数.6>>2相当于$6\div2^2$.
  • >>>表示数据进行右移时,最高位不论是什么都用0补.而>>会考虑原数符号.
  • 通常使用位运算更加高效.
class Operate{
    public static void main(String[] args){
        int a = 3,b = 5;
    	//要求将a,b两个变量互换位置.
    	//第一种方法 定义第三方变量 开发十首选
    	int c ;
    	c = a;
    	a = b;
    	b = c;
    	//第二种方法 不需要定义第三方变量,但可能会导致精度缺失
    	a = a + b; //a = 3 + 5 = 8
    	b = a - b; //b = 8 - 5 = 3
    	a = a - b; //a = 8 - 3 = 5
    	//第三种方法,不需要定义变量,但阅读星差
    	a = a ^ b; //a = 3 ^ 5
    	b = a ^ b; //b = (3 ^ 5) ^ 5 = 3
    	a = a ^ b; //a = (3 ^ 5) ^ 3 = 5
    }
    
}

三元运算符

格式: 条件表达式?表达式1:表达式2;

1. Java基础—廖雪峰的博客

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!

记一次折腾网盘的过程 上一篇
Java学习第一课 下一篇