JavaSE基础篇1
转义字符
package com.ligong.basic;
public class Helloworld {
public static void main(String[]args){
//转义字符 \
//1.输出带引号的“你好世界”
System.out.print("\"你好世界\"");
//2.输出\你好世界\
System.out.println("\\你好世界\\");
//3.换行
System.out.println("你好世\n界");
//4.制表符
System.out.println("你好\t世界\t你好\tjava");
}
}
运行结果
"你好世界"
\你好世界\
你好世
界
你好 世界 你好 java
计算机中的存储单元
- 最小的信息单位bit(比特)
- 最小的存储单位Byte(字节)
- 两者之间的关系1Byte=8bit
- 汉字占用字节数2个字节
8 bit = 1 B
1024 B= 1 KB
1024 KB =1 MB
1024 MB = 1GB
1024 GB = 1TB
1024 TB = 1 PB
1024 PB = 1 EB
1024 EB = 1 ZB
基本数据类型
- 四类八种
数据类型 | 关键字 | 内存大小 | 取值范围 |
---|---|---|---|
字节型 | byte | 1个字节(1B) | -128~127 2^7-1 |
短整型 | short | 2个字节(2B) | -32768~32767 2^15-1 |
整型 | int | 4个字节(4B) | 21开头的十位数 2^31-1 |
长整型 | long | 8个字节(8B) | 92开头的19位数 2^63-1 |
单精度的浮点数 | float | 4个字节(4B) | -1.4013E-45~3.4028E+38 |
双精度浮点数 | double | 8个字节(8B) | 4.9E-324~1.7977E+308 |
字符型 | char | 2个字节(2B) | 0~65535 |
布尔类型 | boolean | 1个字节(1B) | true,false |
备注:java中的默认的基本数据类型:整数类型为int,浮点型为double
数据类型
基本数据类型
- 整数
- 浮点数
- 字符
- 布尔
引用数据类型
- 类
- 数组
- 接口
- 字符串
package com.ligong.basic;
public class BasicDataType {
public static void main(String[]args){
//整型
System.out.println(getType(123));
//长整型
System.out.println(getType(127871988129831L));
//双精度浮点数
System.out.println(getType(3.14));
//单精度浮点数
System.out.println(getType(3.14f));
//
int a=3;
System.out.println(getType(a));
String b=""+a;
System.out.println(getType(b));
}
// 获取对应数据的类型
public static String getType(Object o){
String type = o.getClass().toString();
return type;
}
}
运行结果:
class java.lang.Integer
class java.lang.Long
class java.lang.Double
class java.lang.Float
class java.lang.Integer
class java.lang.Stringt
变量
- 定义变量
- 给变量赋值
- 定义并赋值
- 一般建议定义时并赋值
注意
- 变量没有赋值是不能使用的
- 变量的作用域问题
- 变量的重复定义
运算符
算术运算符
运算符 | 运算规则 | 范例 | 结果 |
---|---|---|---|
+ | 正号 | +3 | 3 |
+ | 加法 | 1+3 | 4 |
+ | 字符串连接 | “中”+“国” | “中国” |
- | 负号 | int a=3;-a | -3 |
- | 减 | 3-1 | 2 |
* | 乘 | 2*3 | 6 |
/ | 除 | 5/2 | 2 |
% | 取模 | 5/2 | 1 |
++ | 自增 | int a=1;a++/++a | 2 |
–(两个减号) | 自减 | int =3;a-/-a | 2 |
package com.ligong.basic;
//算术运算符
public class CountOperator {
public static void main(String[]args){
//正号
System.out.println(+3);
//加法
System.out.println(1+3);
//字符串连接
String a="今天周五";
String b="今天放假";
System.out.println(a+b);
//负号
int k =3;
System.out.println(-k);
//减法
System.out.println(3-1);
// String c="晚上吃什么饭";
// int d=4;
// System.out.println(c+d);
//乘法
int h=2;
int j=3;
System.out.println(h*j);
//除法
int c=5;
int d=2;
System.out.println(c/d);
double x=c/d;
System.out.println(x);
}
}
运算结果:
3
4
今天周五今天放假
-3
2
6
2
2.0
赋值运算符
运算符 | 运算规则 | 范例 | 结果 |
---|---|---|---|
= | 赋值 | int a=2 | 2 |
+= | 加后赋值 | int a=2,a+=2 | 4 |
-= | 减后赋值 | int a=2,a-=2 | 0 |
*= | 乘后赋值 | int a=2,a*=2 | 4 |
/= | 整除后赋值 | int a=2,a/=2 | 1 |
%= | 取模后赋值 | int a=2,a%=2 | 0 |
比较运算符
运算符 | 运算规则 | 范例 | 结果 |
---|---|---|---|
== | 相等于 | 4==3 | false |
!= | 不等于 | 4!=3 | true |
< | 小于 | 4<3 | false |
> | 大于 | 4>3 | true |
<= | 小于等于 | 4<=3 | false |
>= | 大于等于 | 4>=3 | true |
逻辑运算符
运算符 | 运算规则 | 范例 | 结果 |
---|---|---|---|
! | 非 | !true | Flase |
&& | 短路与 | false&&true | False |
II | 短路或 | false II true | True |
- 逻辑运算符:
语法格式:
boolean r = 布尔表达式1 逻辑运算符(&;|;!..) 布尔表达式2
1)逻辑运算符运算结果是布尔典型
2)布尔表达式:是指运算结果是布尔值的式子 - &与/和(and) false&true false
只有&两边的表达式的值都是true 整体结果才是true,其他都是false
全真才真,一假就假 - ==| == 或
只有| 两边的表达式的值都是false,整体结果才是false,其他都是true
全假才假,一真就真 - ! 非/取反
非错即对 - && 短路与
因为&是一错就错,所以当&&前已经是false时,那么就可以确定整体表达式的结果是false
后续的表达式就不再执行了 - ==|| ==短路或
与上类似 - 只要第一个表达式的结果能确定整体表达式的结果,后面表达式就短路不执行
boolean r1 = 1>0 && 2<0;//短路与 假
boolean r2 = 2<0 || 1>0;//短路或 真
boolean r3 = 1>0 & 2<0;
boolean r4 = 2<0 | 1>0;
System.out.println(r1);
System.out.println(r2);
System.out.println(r3);
System.out.println(r4);
System.out.println((1 < 0 || 1/1==1)&&(1>0||1/0==1));
//1.先判断两个小括号里true/false
//2.第一个小括号:1<0为假 1 / 1 == 1为真 ==> 第一个小括号结果为true
//3.第二个括号:1>0为true 因为短路或一真为真 后面的不做判断被短路 ==> true
//4.小括号1:true 小括号2:true ==> true
运行结果:
false
true
false
true
true
运算符 | 运算规则 | 范例 | 结果 |
---|---|---|---|
& | 与 | 1&0,0&0,1&1 | 0,0,1 |
I | 或 | 1I0.0I0,1I1 | 1,0,1 |
^ | 异或 | 10,00,1^1 | 1,0,0 |
- ^运算规律
10=1,00=0,任何数和0相异或得到的是这个数本身
01=1,11=0,任何数和1相异,或得到是这个数的相反数
一个数自己和自己异或得到的是0
三目/三元运算
- 数据类型 变量= 布尔表达式 ? 当前面结果是true是执行此处;当前面结果是false时执行此处;
- 数据类型 变量 = A ? B : C;
1.先执行A处的布尔运算,得到一个布尔值
2.当布尔值是true时,执行B处代码
3.当布尔值是false时,执行C处代码
4.整体结果的数据类型根据执行B处或者C处代码的结果方式
5.B处和C处的结果数据类型一致
package com.ligong.basic;
public class score {
public static void main(String[] args) {
int c=110;
int d=180;
int e=1100;
int f=c > d ? (c>e ? c:e) : (d>e ? d:e);
System.out.println(f);
}
}
运行结果:
1100
分支语句-if语句
- 语法
- if(布尔表达式){
语句1;
语句2;
…
}
- if(布尔表达式){
- 执行流程:
1.先判断布尔表达式
2.如果结果是true,就执行if后的{ }内的语句,然后继续执行后续的
3.如果结果是false,就跳过if后的{ },而是执行后续的代码
双分支 - if…else…
if (布尔表达式){
当布尔表达式值是true,执行if后的语句:
且不执行else中的语句 布尔结果:true 执行if中语句 跳过else
}else{
当布尔表达式值是false是,不执行if后的
而是执行else后的语句,布尔结果是false 执行else语句,不执行if
if(布尔表达式2){
else if(布尔表达式2){
语句2;
}else if(布尔表达式3){
语句3;
}...{
语句n
}else{
语句n+1;
}
}
- 一旦有某个语句了,后续的if…else将不再执行
选择语句,Switch case语句
switch(值){
case 值1:
语句1;
break;
case 值2;
语句2;
break;
...
case 值n:
语句n;
break;
default:
语句n+1;
}
执行流程:
1.switch后的值,与case后的值比较
2.如果相等,就执行改case下的语句
3.如果遇到break,跳出switch结构,执行后续
4.如果没有break,会造成case击穿
5.如果不相等,比对下一个case
6. …
7. 如果没有一个case比对成,那么执行default中的语句-
- switch后支持byte shart int char String enum(枚举)
- case后的值的数据类型要与switch的值数据类型一致,case值后是冒号!**
循环4要素
1.循环初始值
2.循环控制条件
3.循环体
4.循环迭代
while循环
-语法:
while(布尔表达式){
循环体;
循环迭代;(++ / --) -->控制循环次数
}
*执行流程:
1.先判断while后的表达式
2.如果是true,就执行{}内的语句
3.执行完{}内的语句,再次判断while后的表达式
4.当while后的结果是false就不再执行{}内的内容
5.继续执行后续
int i = 1; //1
while (i < 6){ //2
System,out.println("你好"); //3
i++; //4
}
while:先判断,后执行
- do while循环==>直到型
- 语法:先执行后判断
do{
循环体;
迭代
}while(布尔表达式);
1.先执行do中的循环内容
2.判断while后的表达式
3.表达式为true,在执行do中的内容
4.在判断…
5.直到false时,跳过循环,执行后续
do while至少循环一次
//输出1-10
int i = 1;
do{
System.out.println(i);
i++;
}while(i<=10);
for循环
for(初始值;控制条件;迭代){
循环体;
}
变量名:在同一作用域内不能重复
变量在这一范围内有效.
同一作用域:在同一个最近的{}内11
- 先执行初始值1处且执行一次
- 开始2处判断,如果为true,就向下执行循环体
- 执行完成后,执行迭代
- 继续判断,如果判断为false,就跳出for结构,执行后续
eclipse好用的快捷键:
1. alt+方向上键(移动代码向上移动)
2. Ctrl+D(删除整行)
3. Ctrl+Alt+方向下键(向下复制一行代码)
4. Ctrl+Alt+L(将代码全部对齐)
基本数据类型的转换
-
自动转换 范围小的可以向范围大的进行转换 byte<short<int<long<floa<double
-
强制转换 范围大的向小的进行转换,需要强制类型转换 小范围数据类型 标识语 = (小范围数据类型) 变量名称;
ASCII
- 字符0~9:对应(48-57),A-Z对应(65-90),a-z对应(97-122)
int和char类型数据转换
- char转换成int,字符型和数值型进行转换的时候都会直 询编码表,由于int4个字节,char2个字节,所以属于自动的 类型转换
- int转换成char,需要强制类型转换
- 如果char是汉字,转换成整数查询的就是Unicode编码表
- char类型的最大整数是65535,因为char没有负数
- char可以直接赋值为Unicode编码,格式为luxox,十六 进制