Java基础☕
目录:
1、Java概述
2、Java环境配置
3、Java注释符
4、编码字符集
5、标识符
6、关键字
7、变量
8、数据类型和转义字符
9、常量
10、数据转换
11、运算符
12、关于计算机中整数与小数的存储方式
13、流程控制
14、方法
15、变量的分类
1、java概述🍜
1.1、Java的特点
封装、多态、继承
1.2、java跨平台
2、java环境配置🍜
2.1、主要配置
主要添加和配置JAVA_HOME
和PATH
系统变量
2.2、cmd窗口
javac -version
:能够打印出版本号(相当的于Java的快捷方式)
2.3、cmd常用命令
① cd:cd后面跟目录,到指定目录或者盘
② dir:显示当前目录下的所有目录
③ Ncpa.cpl:计算机网络配置
④ mspaint:打开系统画布
⑤ copy:复制
⑥ cls:清屏
3、Java注释符🍜
①//
:单行注释符
② /**/
:多行注释符
③ /***/
:文档注释
4、编码字符集🍜
- ASCII:美国信息交换标准代码
- GBK:中国编码
- Unicode编码库:utf-8编码
5.标识符🍜
⭐三个规则两个标准一个注意事项
5.1三个规则:
- 不能用数字、下划线开头,由字母、数字、下划线、$组成
- 不能与关键字重名
- 严格区分大小写
5.2两个标准:
- 驼峰标注(类大驼峰,方法变量小驼峰)
- 见名知意
5.3一个注意事项:
- 可以使用汉字
6、关键字🍜
- 定义:被java所采用的一些单词,我们无法使用,例如:
public | static | void | return |
---|---|---|---|
private | implements | int | String |
protacted | class | short | byte |
interface | double | float | boolean |
7、变量🍜
- 定义:在程序中定义的一个可以用来存储数据的空间,在程序的运行过程中值可以发生变化
public class demo{
public static void main(String[] args){
//声明一个int类型的数据
int num;
//对num复制
num=20;
num=30;
System.out.println(num);//30
}
}
8、数据类型和转义字符🍜
分类:基本数据类型和引用数据类型
8.1 基本数据类型
-
整数型数据
数据类型 数据名 占字节位数 范围 byte 字节型 1B -128~127 short 短整型 2B ±3万 int 整数型 4B ±21亿 long 长整型 8B 很大 -
浮点型数据
float | 单浮点型 | 4B | 7~8位 |
---|---|---|---|
double | 双浮点型 | 8B | 15~17位 |
- 布尔类型数据
Boolean | 布尔类型/逻辑型 | 1B(实际是1bit) | true/false |
---|
- 字符类型
char | 字符类型 | 2B | (ASCII)0~255个字符、(Unicode)即0x00至0xFF、 (补码)65535 |
---|
8.2 引用类型数据
①、数组 ②、类 ③、接口
8.3 转义字符
- “\n \r \r\n \t”
public class demo{
public static void main(String[] args){
System.out.print("abscdsfg"+"\t"+"adgs");
System.out.print("abs"+"\t"+"adses");
System.out.println("\n");
System.out.print("111111"+"\r\n");
}
}
9、常量🍜
定义:在程序中,无法重新赋值改变的量
-
修饰符:public static final:主要是final
-
Eg:
public static final int num=10;
10、数据转换🍜
10.1 数据小转大
①byte—>int ②short---->int ③int ----->long
public class demo{
public static void main(String[] args){
//①byte--->int
byte num01=10;
int num02=num01;
//②short---->int
short num03=300;
int num04=num03;
//③int ----->long
long num04=1000;//如果赋值1000超过int范围会提示报错
long num05=100000000000L;//加L表示是long型数据
}
}
10.2 数据大转小
① int---->byte ② long ------int ③ int ------>char
public class Demo{
public static void main(String[] args){
// byte num=300;报错超出byte范围
//byte num01=100;//报错有可能精度丢失
byte num01=(byte)100;
char ch=(char)97;//返回值a
}
}
10.3、四则运算规则的汇总
11、运算符🍜
11.1、算数运算符
+加 | -减 | ++加加 | –减减 | /除 | %求余 | *乘 |
---|
11.2、逻辑运算符
- & 与:无论左边是否为真,都要判断右边
- | 或:无论左边是否为假,都要判断右边
- && 短路与:左边为真直接为真,不判断右边
- || 短路或:左边为假直接为假,不判断右边
- ! 非:直接去反
- ^ 异或: 相同为零,不同为一
11.3、赋值运算符
=
:等于号(就是简单的赋值)
11.4、关系运算符
>
:大于号>=
:大于等于<
:小于号<=
:小于等于!=
:不等于==
:恒等于- instanceof:
instanceof是Java中的二元运算符,左边是对象,右边是类;当对象是右边类或子类所创建对象时,返回true;否则,返回false。
11.5、位运算符
>>:右位移
<<:左位移
>>>:无符号右移
注释:
-
左移:空缺补0,被移除的高位丢弃,空缺位补0,比如32位二进制 0000…00011左移3位变成了0…00011xxx,则xxx补足000即可。规律左移是基数乘以2的移位幂次方,比如3<<2则是322也就是3乘以2的2次幂。
-
右移:最高位是什么就补什么。高位是1补1,是0就补0.,规律左移是基数除以2的移位幂次方,比如3>>1则是3/2也就是3除以2的1次幂。
-
无符号右移:无论高位是0还是1都补0
11.6、三目运算符(条件运算符)
- ”条件表达式”?“值1”:“值2”
Eg:10>5?"大于":"x小于";
11.7、扩展运算符
- +=:a+=b相当于a=a+b
- -=: a-=b相当于 a=a-b
- /=:a/=b相当于 a=a/b
- %=:a%=b相当于 a=a%b
- *=:a*=b相当于 a=a*b
11.8、运算符的优先级
12、关于计算机中整数与小数的存储方式🍜
- 整数
- 正整数:原码反码补码都是不变
- 负整数:
- 原码:符号位为1其余不变
- 反码:符号位1,其余取反
- 补码:符号位为1,其余取反加一
- 按补码存储
- 小数
- 按照浮点数的存储方式
13、流程控制🍜
13.1、分支语句
int a=10;
int b=20;
if(a>b){
System.out.println("结果");
}
int a=10;
int b=20;
if(a<b){
System.out.println("a<b:"+a<b);
}else{
System.out.println("a<b:"+a<b);
}
int a=1;
switch(a){
case 1:a=10;break;
case 2:a=20;break;
case 3:a=30:break;
default :a=100;break;
}
int a=10;
if(a>1){
a=20;
}else if(a>100){
a=10;
}else if(a>1000){
a=1;
}
13.2、循环语句
- for()循环
//指定次数循环
int s=0;
for(int i=1;i<=100;i++){
s=s+i;
}
System.out.println(s);
//无限循环
for(;;){
System.out.println("根本停不下来");
}
简单说for循环是万能循环,可以再指定次数的循环,也可以无限循环
- while(条件表达式){语句体}
int s=0;
int i=1;
while(i<=100){
s=s+i;
i++;
}
通过条件表达式作为循环条件
- do{语句体}while(条件表达式)
int s=0;
int i=1;
do{
s=s+i;
i++;
}while(i<=100)
while和do……while()前者循环只要不执行,循环次数为0,后者无论是否执行循环最差执行一次
13.3、循环的嵌套
假设打印一个三角形*
for(int i=1;i<=5;i++){
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println(" ");
}
13.4、循环的跳出方法
- break :直接跳出当前循环(多层循环时,只能跳出本层)
- continue:结束本次循环直接进行下一次
- return:结束整个程序
14、方法🍜
14.1、什么是方法?
- 方法就是一段处理问题或解决业务的代码块,通过对其定义,方便其他人使用时足够方便
14.2、方法的格式
①【public】【static】【void】main(【形参列表】){
【方法体】
}
-
public :修饰符(private、protected)公共的
-
static :静态的 (static 修饰的类直接类名.方法名,其余需要引用.方法名())
-
void : 返回值类型(int、String、……)
14.3、方法的重载
定义:方法名相同,参数个数不一样,返回值不一样,程序体不一样
//EG:
public static int method(int a){
System.out.println("a="+a);
return a;
}
public static void method(int a,int b){
System.out.prinlnt("a="+a+"b="+b);
}
public static double method(double a,double b,double c){
return a+b+c;
}
🐖:基本数据类型中,不一定精确匹配,最近最优原则,都完全匹配的方法,则类型转换
🐖:此处的重载都是静态的方法,非静态的也可以,需要创建对象调用
14.4、方法之递归
个人看法,递归在一定程度上由循环的意思,但内核却是类似一个树状图,举例演示:
import java.util.Scanner;
/**
* 递归实现求任意一个阶数
*/
public class Demo02{
public static void main(String[] args){
System.out.prinlnt("请输入要求的阶数:");
Scanner can=new Scanner(System.in);
System.out.println(method(can.nextInt()));
}
public static int method(int num){
if(num==1){
return 1;
}
return num*method(num-1);
}
}
缺点:占内存,效率慢
优点:写法简单,尤其是对于数据结构中的树状运算
15、变量的分类
15.1、局部变量
定义:便是我们平时定义在方法里的变量,超出所在方法范围后,自动回收
- 位置:在方法里定义
- 作用域:所在方法体内,出方法体自动回收
- 调用方式:直接调用
public static void method(){
int a=10//这个就是局部变量,作用域只在method方法内
}
15.2、成员变量
即在类里,但不在方法发内定义的变量,静态的成员变量可以直接类名点,非静态这对象点调用
- 位置:类内,方法外
- 作用域:这个类
- 调用方式:静态的直接类名.调用,非静态的则是引用.调用
public class Demo{
int a=10;
static int b=30;
public static void method(){
b=30;
System.out.println(b);
Demo D=new Demo();
D.a=20;
System.out.prinln(D.a);
}
}
补充:①String.haNextInt()判断是否是整数,提前为系统判断用户输入的是否是整数,而不是其他类型,防止编译时,因为输入问题报错。
②System.exit(-1)退出虚拟机