一. 注释
注释是卸载程序中对代码解释说明的文字,方便自己和其他人查看,以便理解程序
1.1 注释的分类
1.1.1 单行注释
// 注释内容 只能写一行
1.1.2 多行注释
/*
注释内容1
注释内容2
*/
1.1.3 文档注释
文档注释的内容可以提取到一个程序说明文档中去
/**
注释内容1
注释内容2
*/
1.2 注释的特点
注释不影响程序的执行(Javac命令进行编译后的.class文件不包含注释)
1.3 注释的快捷键
快捷键进行注释 | 功能效果 |
Ctrl+/ | 单行注释(对当前行进行注释) 再按恢复 |
Ctrl+Shift+/ | 对选中的代码进行多行注释 再按恢复 |
二. 字面量
字面量就是数据在程序中的书写格式
常用数据 | 生活中的写法 | 程序中的写法 | 说明 |
整数 | 666 -888 | 666 -888 | 写法一致 |
小数 | 13.14 -5.20 | 13.14 -5.20 | 写法一致 |
字符 | A、0、你 | ‘A’、‘0’、‘你’ | 程序中必须使用单引号 有且仅能一个字符(不能不写字符) |
字符串 | 你好星期六 | "你好星期六" | 程序中必须使用双引号,内容可有可无 |
布尔值 | 真、假 | True、False | 只有两个值True真、False假 |
空值 | null | 一个特殊的值 |
//整数
System.out.println(100);
//小数
System.out.println(99.5);
//字符 必须用单引号围起来,必须只有一个字符
System.out.println('a');
System.out.println('中');
System.out.println('0');
System.out.println(' '); //空字符
// System.out.println(''); //错误写法
//特殊字符 \n 换行 \t tab缩进
System.out.println('\n'); //println本身带有换行属性,加上\n要再换一行
System.out.println('\t');
//字符串 必须用双引号围起来,内容任意
System.out.println("我爱你中国");
System.out.println("");
System.out.println(" ");
System.out.println("6");
//布尔值 只有true false
System.out.println(true);
System.out.println(false);
三. 变量
变量是用来存储数据的,本质是内存中的一块区域(可以理解成一个装数据的盒子)
3.1 变量的定义格式
数据类型 变量名称 = 数据;
3.2 使用变量的好处
便于扩展和维护,编写的代码更加灵活,管理代码更方便
3.3 变量的特点
变量中的数据是可以被替换的
3.4 使用变量的注意事项
(1)变量要先声明才能使用
(2)变量是什么类型,就应该用来装什么类型的数据,否则报错
(3)变量是从定义开始到“}”截至的范围内有效,且同一个范围内,定义的多个变量,他们的名称不能一样
(4)变量定义的时候可以不赋初始值,但在使用的时候,变量必须有值,不然报错。
四. 关键字 标识符
4.1 关键字
是Java语言自己用到的有特定含义的一些词 eg:public、class、int、double
注:关键字不能用来作为类名、变量名,否则会报错
4.2 标识符
写程序的时候会起一些名字,比如类名、变量名等等都是标识符
4.2.1 标识符的要求
基本组成:由数据、字母、下划线(_)和美元符($)等组成
强制要求:不能以数字开头、不能用关键字做名字、要区分大小写
建议规范:
变量名称:满足标识符规范,同时建议用英文、有意义、首字母小写,满足驼峰模式
eg:int studyNumber = 61;
类名称:满足标识符规范,建议全英文、有意义、首字母大写,满足驼峰模式
eg:HelloWorld、Student
五. 变量详解
5.1 数据(数字)的存储
数据在计算机中的存储采用二进制(使用0和1,按照逢2进1的方式表示数据来存储)
5.1.1 十进制和二进制的相互转换
(1)十进制转换成二进制
采用除二取余法(eg:6=110 、13=1101)
(2)二进制转换成十进制
0011(0*2^3+0*2^2+1*2^1+1*2^0=3) 1101(1*2^3+1*2^2+0*2^1+1*2^0=13)
5.1.2 八进制和十六进制
(1)二进制转八进制
(2)二进制转十六进制
Java程序中支持书写二进制、八进制、十六进制的数据,分别需要以0B或0b、0、0X或0x开头
5.1.3 数据存储单元
计算机中表示数据的最小单元:一个字节(byte,简称B,是使用8个二进制位组成的),字节中的每个二进制位就称为位(bit,简称b),1B = 8b
在字节(B)的基础上发展出了KB、MB、GB、TB……这些数据单位
1B=8b 1KB=1024B 1MB=1024KB 1GB=1024MB 1TB=1024GB
5.2 字符的存储
字符在计算机中存的是ASCII码表中对应的数字的二进制形式 (eg:'A'=65 'a'=97 '0'=48)
ASCII编码表:美国信息交换标准编码,规定了现代英语、数字字符和其他西欧字符对应的数字编号。
5.3 图片数据-彩色图的存储
图片就是无数个像素点组成的,每个像素点的数据:用0-255*255*255表示其颜色
5.4 声音数据的存储
六. 数据类型
数据类型分为基本数据类型和引用数据类型
基本数据类型:4大类8种
数据类型 | 内存占用(字节数) | 数据范围 | |
整形 | byte | 1 | -128~127 |
short | 2 | -32768~32767 | |
int(默认) | 4 | -2147483648~2147483647(10位数) | |
long | 8 | -9223372036854775808~9223372036854775807 | |
浮点型(小数) | float | 4 | 1.401298 E -45 到 3.4028235 E +38(E 科学计数法表示 3.4028235*10^38) |
double(默认) | 8 | 4.9000000 E -234 到 1.797693 E +308 | |
字符型 | char | 2 | 0-65535 |
布尔型 | boolean | 1 | true,false |
// 随意定义一个整型字面量默认是int类型,12345678910虽没有超过则long范围,但是超过了本身int类型的范围
// 如果希望随便写一个整型字面量默认是long型,需要在后面加上L/l
long x = 12345678910; 错误
long y = 12345678910L;
// 随意定义一个小数字面量默认是double类型,如果希望小数是float,后面加上F/f
float f = 3.14; //错误
float t = 3.14F;
// 字符型
char ch1 = 'a';
char ch2 = '中';
char ch3 = ''; //错误(字符字面量必须只有一个字符)
// 布尔型
boolean flag1 = true;
boolean flag2 = false;
//引用数据类型
//String 字符串类型,定义的变量可以用来记住字符串数据
String name = "张三";
七. 类型转换
7.1 类型转换的原因
存在不同类型的变量赋值给其他类型的变量
7.2 类型转换的种类
7.2.1 自动类型转换
类型范围小的变量可以直接赋值给类型范围大的变量
自动类型转换的形式:byte -> short -> int -> long -> float -> double(char -> int)
byte a = 127;
int b = a;
System.out.println(a); //a=127
System.out.println(b); //b=127
7.2.2 表达式的自动类型转换
在表达式中,小范围类型的变量,会自动换成表达式中较大范围的类型,再参与运算。
byte、short、char - > int -> long - > float -> double
注:
(1)表达式的最终结果类型由表达式中的最高类型决定
(2)表达式中,byte、short、char是直接转换成int类型参与运算的
byte i = 10;
short j = 20;
short a = i + j; //报错,因为在表达式中,byte、short、char是直接转换成int类型参与运算的
int b = i + j; //正确
7.2.3 强制类型转换
类型范围大的数据或变量,直接赋值给类型范围小的变量,会报错,强制类型转换是强行将类型范围大的变量、数据赋值给类型范围小的变量
数据类型 变量2 = (数据类型)变量1、数据
注:
(1)如果类型范围大的数据或变量,在类型范围小的规定范围之内(如int a=20,如果强制转换成byte型,20符合byte的类型范围),则可以成功转换;如果不符合,强制类型转换可能造成数据(丢失)溢出
(2)浮点型强制转换成整型,直接丢掉小数部分,保留整数部分返回
八. 运算符
8.1 基本的算术运算符
+(加)、-(减)、*(乘)、/(除,在Java中两个整数相除结果还是整数)、%(取余,获得两个数据做除法的余数)
System.out.println(5 / 2); //2
System.out.println(5.0 / 2); //2.5
int i = 5;
int j = 2;
System.out.println(i / j); //2
System.out.println(1.0 * i / j); //2.5
注:"+"符号在Java中与字符串运算的时候,可以用作连接符,结果依然是个字符串(eg:"abc" +5 -> "abc5")
int a = 5;
System.out.println("abc" + a); //"abc5"
System.out.println(a + 5); //10
System.out.println("abcd" + a + 'a'); //"abcd5a"
System.out.println('a' + a + 'abcd'); //"102abcd"
8.2 自增自减运算符(只能操作变量)
自增++:放在某个变量前面或者后面,对变量自身的值加1
自减--:放在某个变量前面或者后面,对变量自身的值减1
++、--如果不是单独使用(如在表达式中、或者同时有其他操作),放在变量前后会存在明显区别:
放在变量的前面,先对变量进行+1,-1,再拿变量的值进行运算
放在变量的后面,先对变量的值进行运算,再对变量的值进行+1,-1
int a = 5;
int b = ++a;
System.out.println(a); //a=6
System.out.println(b); //b=6
int c = 5;
int d = c++;
System.out.println(c); //c=6
System.out.println(d); //d=5
8.3 赋值运算符
8.3.1 基本赋值运算符
'=' 从右往左看 eg:int a=10;
8.3.2 扩展赋值运算符
符号 | 用法 | 作用 | 底层代码形式 |
+= | a+=b | 加后赋值 | a=(a的类型)(a+b) |
-= | a-=b | 减后赋值 | a=(a的类型)(a-b) |
*= | a*=b | 乘后赋值 | a=(a的类型)(a*b) |
/= | a/=b | 除后赋值 | a=(a的类型)(a/b) |
%= | a%=b | 取余后赋值 | a=(a的类型)(a%b) |
8.4 关系运算符
>(大于) >=(大于或者等于) <(小于) <=(小于或者等于) ==(等于) !=(不等于)
成立返回true,不成立返回false
8.5 逻辑运算符
&(逻辑与):2>1 & 3>2 多个条件必须都是true结果才是true;有一个是false结果就是false
|(逻辑或):2>1 | 3<5 多个条件中只要有一个是true结果就是true
!(逻辑非):!(2>1) 就是取反,! true == false,! false = true
^(逻辑异或):2>1 ^ 3>1 前后条件的结果相同返回false,前后条件结果不同返回true
&&(短路与):判断结果和&一样,过程不同:左边为false,右边则不执行
||(短路或):判断结果和|一样,过程不同:左边为true,右边则不执行
8.6 三元运算符
格式:条件表达式 ? 值1 : 值2;
执行流程:首先计算关系表达式的值,如果值为true,返回值1,如果为false,返回值2
8.7 运算符优先级
注:&&优先级高于||
九. API
API(Application Programming Interfere:应用程序编程接口):Java写好的程序,可以直接拿来调用
Java为自己写好的程序提供了相应的程序使用说明书(API文档)
eg:Java中常用的API,如使用Scanner接受用户键盘输入的数据
1.导包:告诉程序去JDK的哪个包中找扫描器技术
2.抄代码:代表得到键盘扫描器对象(东西)
3.抄代码:等待接收用户输入数据
注:
System、String在JDK中的java.lang包下,lang包不需要我们导包,是默认的包