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):
- 类
- 接口
- 数组
什么是字节?
- 位(bit):是计算机内部数据储存的最小单位;
- 字节(byte):是计算机中数据处理的基本单位,习惯用B表示;
- 1B(byte,字节)=8bit(位);
- 字符:是指计算机中使用的字母、数字、字和符号;
- 电脑的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
- 简易理解(抛开上面的转换方法,单纯理解2进制的数值本身):
八进制
- 0-8,逢8进1;
10=9?10=8
十六进制
- 0-9+A-F,逢16进1;