java的一些基础知识

JDK、JRE、JVM

​ JDK - Java开发工具包

​ JRE - Java运行时环境

​ JVM - Java虚拟机

注:JRE包含JVM,源码(.Java文件)编译成字节码文件(.class文件),运行在JVM中

变量

​ 在程序执行过程中可以发生改变的量

关键字

​ Java提供的具有特殊意义的单词

标识符

​ 给类、接口、枚举、变量、常量取名时用到的字符

规则

​ 1.区分大小写

​ 2.不能以数字开头

​ 3.不能使用除$和_(下划线)以外的特殊字符

​ 4.不能使用Java关键字

​ 5.由于编码问题,一般不使用中文

数据类型

基本数据类型(简单数据类型)

1.数值型

​ 整数类型:

​ 字节型 - byte - 1字节(1字节占8bit)

​ 短整型 - short - 2字节

​ 整型 - int - 4字节

​ 长整型 - long - 8字节

​ 浮点型:

​ 单精度浮点型 - float - 4字节

​ 双精度浮点型 - double - 8字节

2.字符型 - char - 2字节

3.布尔型 - boolean - 4字节

注:1.byte取值范围:-128~127

​ 2.int取值范围:-21亿~21亿

​ 3.char取值范围:0~65535

​ 4.boolean单独使用,底层用int做表示,所以占4字节;但是在数组里使用,用byte表示,占1字节

​ 5.浮点类型使用IEEE754的标准(在运算时可能丢失精度)

​ 6.boolean不能和其他类型兼容

引用数据类型(除基本数据类型以外的数据类型)

​ 数组、类、接口、枚举

运算符

算术运算符:+、-、*、/、%(取余)、++、–

赋值运算符:=、+=、-=、*=、%=、/=、

关系运算符:==、!=、>=、<=、<、>

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

三目运算符:变量=(表达式)?值1:值2

位运算符:&、|、^、<<、>>、>>>

注:1.<<:数据的二进制左移一位,相当于原数乘二;>>>:无符号右移一位,右移时不管符号

​ 2.赋值底层逻辑:

​ byte num=10

​ num += 5;——>num = (byte)(num+5);

​ 3.关系运算符和逻辑运算符的结果必须是boolean类型

​ 4.&和&&、|和||的区别

​ &&:前者判断为false后,直接返回false,不判断后者,相当于短路,效率更高

​ &:前者判断为false后还会判断后者
​ |:判断前者为true后,还会判断后者

​ ||:判断前者为true后,不会判断后者,直接返回true,效率更高

​ 5.三目运算符:表达式为true,返回值1,反之,返回值2

Java流程控制语句

1.顺序语句:方法里的代码从上往下运行

2.分支语句:条件成立,就执行相应代码块

​ if分支、switch分支

3.循环语句:条件成立,就重复执行代码块

​ for循环、while循环、do-while循环

4.特殊的流程控制语句

​ break、continue、retrun、lable

分支语句

if和switch的区别

​ 1.if表达式只能存放boolean,而switch可以存放byte、short、int、char、枚举(JDK1.5)、字符串(JDK1.7)

​ 2.if判断区间、复杂条件,而switch只能判断单个值

switch判断的底层原理:

​ 把数据转换成int类型再做判断,byte和short都向上转型为int,int直接使用,char则获取字符的Unicode值,枚举则获取对象编号,字符串则获取hash码+equals判断

循环语句

for和while和do-while区别:

​ 区别1 - 表达式:

​ for(初始化变量;判断条件;更新变量){}

​ while(判断条件){}

​ do{}while(判断条件);

​ 共同点:判断条件的结果必须是boolean类型,true就循环,false就跳出循环

​ 区别2 - 执行顺序:

​ for、while:先判断,再执行

​ do-while:先执行一遍,再判断

​ 区别3 - 应用场景:

​ for:循环次数确定时使用

​ while:循环次数不确定时使用,先判断,再执行

​ do-while:循环次数不确定时使用,先执行一遍,再判断

特殊的流程控制语句

break:作用于循环中,表示结束当前循环

continue:作用于循环中,表示跳过当前循环,进入到下一次循环

return:作用于方法中,表示结束当前方法

lable:给循环做标记

方法

含义:含有特殊含义的代码块

好处:减少代码冗余

分类:

​ 1.无参无返回值的方法

public void method(){}

​ 2.带参数的方法

public void method(String s){}

​ 3.带返回值的方法

public String method(String s){ return s;}

注:返回的数据必须与返回值类型相同

​ 4.静态方法

​ 属于类的方法,可以使用类名直接调用

public class New(){
    //静态方法
    public static int add(int a,int b){ return a+b;}
}

​ 5.成员方法

​ 属于对象的方法,成员方法使用对象调用

public class New(){
    //成员方法
    public int add(int a,int b){ return a+b;}
}

形参

声明方法时规定的参数,该参数必须设置参数类型

实参

调用方法时传入的实际参数,该参数必须和方法的形参类型兼容

数组

问:数组是什么数据类型?

记住!除基本数据类型以外的数据类型都是引用数据类型

​ 数组相当于是一种特殊的盒子,可以存储多个元素,这些元素按顺序排列,并且每个元素都有自己的位置,我们可以通过位置来访问或者修改其中的元素

​ 元素都有编号,叫做下标或者索引,它从0开始

​ 数组一旦初始化成功,长度一般不可变

数组动态初始化和静态初始化

静态初始化:程序员指定元素,长度由系统自动分配

​ String[] names = {“元素1”,“元素2”,“元素3”,…};

动态初始化:程序员指定长度,元素由系统自动分配

​ String[] names = new String[5];

ps:动态初始化的默认元素

​ 整型:0

​ 浮点型:0.0

​ 字符型:‘ ’(空字符)

​ 布尔类型:false

​ 引用类型:null

数组的复制

//浅表复制,直接复制
	String[] names = {"小红","小绿","小黑"};
	String[] newNames = names;

//深表复制,先复制长度,再将值一个一个复制过去
	String[] names = {"小红","小绿","小黑"};
	String[] newNames = new String[names.length];
 	int index = 0;
	for(String element:names){
 	newNames[index++] = element;
	}

数组的扩容

String[] names = {"小红","小绿","小黑"};
int newCapacity = names.length<<1;
//问:<<代表什么?
//数据的二进制左移一位
String[] newNames = new String[newCapacity];
int index = 0;
for(String element:names){
	newNames[index++] = element;
}

数组的删除

String[] names = {"小红","小绿","小黑","小粉","小黄"};
for(i=3;i<names.length-1;i++){
    names[i] = names[i+1];
}
//完成后的数组names = {"小红","小绿","小黑","小黄","小黄"};

二维数组

相当于多个一维数组组成的集合

//创建二维数组,第一个一维数组的元素为3个,第二个一维数组的元素为4个
String[][] names = new String[2][];
String[] s1 = {"aaa","bbb","ccc"};
String[] s2 = {"xxx","yyy","zzz","xyz"};
names[0] = s1;
names[1] = s2;

若有错误,欢迎指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值