文章目录
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;
若有错误,欢迎指正!
标签:java,String,int,数据类型,基础知识,运算符,names,数组,一些 From: https://blog.csdn.net/nzksk/article/details/140558452