Java复习之-基础

一 基础知识

1.1标识符

命名规则:首先要做到见名知意,其次以字母、下划线、美元符开头 后跟字母、下划线、美元符或数字
A:包
.最好是将域名倒过来写,要求全部小写
B:类和接口
.如果是一个单词就首字母大写
.如果是多个单词,就每个单词的首字母大写
C:方法和变量
.如果是一个单词就全部小写
.如果是多个单词就第一个单词全部小写,此后每个单词的首字母大写
D:常量
.如果是一个单词则所有字母大写
.如果是多个单词则所有字母大写,单词与单词之间用下划线连接起来

1.2进制与进制转换

A:二进制的数据表现形式
.由0,1组成。以0b(b可以大写也可以小写)开头(JDK1.7)
B:八进制的数据表现形式
.由0,1,…7组成。以0开头
C:十进制的数据表现形式
.由0,1,…9组成。整数默认是十进制的
D:十六进制的数据表现形式
.由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头
十进制转换成其他进制:取余法,让十进值不断的/2或/8或/16直到不能再除,将每一次的余数从后向前写出来就是这个数的二进制/八进制/十六进制
其他进制之间的转换都是采用系数*基数的权次幂相加即可

1.3源反补码

A: 原码
.就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
.通过一个字节,也就是8个二进制位表示+7和-7
0(符号位) 0000111
1(符号位) 0000111
B:反码
.正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除 外。
C:补码
.正数的补码与其原码相同;负数的补码是在其反码的末位加1。

1.4 JAVA基本数据类型(四类八种)与引用数据类型

基本数据类型:属于一种不可被简化,内置的的基本的数据类型,由编程语言定义,他表示了真实的数字,字符和整数。
A:整数型
.byte 占一个字节 -128到127
.short 占两个字 -215~215-1
.int 占四个字节 -231~231-1 JAVA中所有的数字默认都是int,所有算 术运算符默认的也是int类型,也 就是说运算结果是int
.long 占八个字节 -263~263-1
B:浮点型
.float 占四个字节 -3.403E38~3.403E38 单精度
.double 占八个字节-1.798E308~1.798E308 双精度
C:字符型
.char 占两个字节 0~65535
.但一个char只能放一个字母或者一个符号或者一个数字(放一个中文字是没有问题的)
D:布尔型
.boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小

引用数据类型:JAVA是不支持C/C++的复合数据类型(struct和union),它的复合数据类型一般都是类或接口的方式来表示,类提供了封装方法和数据的方式,同时可以针对程序外部进行信息隐藏
A:数组属于引用类型
B:String字符串属于引用类型
C:类和接口

1.5面试题之变量相加和常量相加的区别

案例演示
A:面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
byte b4 = 3 + 4;

​ 从两方面去回答这个题:
​ b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值
​ byte类型的变量在进行运算的时候,会自动类型提升为int类型
​ 3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了

1.6算术运算符

算术运算符主要用于进行基本的算术运算,主要的算数运算符有+,-,*,/,++,–,%
A:+号在java中有三种作用,代表正号,做加法运算,字符串的连接符
B:整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型
C:/获取的是除法操作的商,%获取的是除法操作的余数
D:*获取的是两个数的乘积,要注意()的使用
E:%运算符
.当左边的绝对值小于右边绝对值时,结果是左边
.当左边的绝对值等于右边或是右边的倍数时,结果是0
.当左边的绝对值大于右边绝对值时,结果是余数
.%运算符结果的符号只和左边有关系,与右边无关
.任何一个正整数%2结果不是0就是1可以用来当作切换条件
F:++ 和 – 既可以出现在操作数的左边,也可以出现在右边,但结果不同
.a++和++a是两个表达式他们代表a自增长1但是a++是先赋值再自增
而++a是先自增再赋值,–(自减少)也是一样

1.7逻辑运算符与位运算符

逻辑运算符主要用于逻辑运算,主要有&&,||,!,&,|,^
A:&&与运算符表示有false则false,但是&&有短路效果,左边false,右边就不执行了
B:||或运算符表示有true则true,但是||有短路效果,左边true,右边就不执行了
C:!逻辑非运算符,非false则true,非true则false,偶数个不会改变本身
D:&逻辑与运算符表示有false则false,执行完左边,右边也会执行
E:|逻辑或运算符表示有true则true,执行完左边,右边也会执行
F:^逻辑异或运算符表示相同为false,不同为false
G:位运算符^的特点:一个数据对另一个数据位异或两次,该数本身不变。
则有X=10; Y=5;
X=XY;//105
Y=XY;//105^5 Y=10
X=XY;//105^10 X=5
I: >>,>>>,<<的用法:
.<<:左移 左边最高位丢弃,右边补齐0
.左移,向左移动几位就是乘以2的几次幂
.>>:右移 最高位是0,左边补齐0;最高为是1,左边补齐1
.右移,向右移动几位就是除以2的几次幂
.>>>:无符号右移 无论最高位是0还是1,左边补齐0

1.8流程控制语句

1.8.1选择结构语句Switch

switch基本数据类型可以接受byte,short,int,char
引用数据类型可以接受枚举和字符串String
A:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的B:default可以省略吗?
.可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
C:default一定要在最后吗?
.不是,可以在任意位置。但是建议在最后。不是放在最后的时候,因为switch语句按照顺序执行,它没有break的话,会穿透
D:switch语句的结束条件
.遇到break就结束了
.执行到switch的右大括号就结束了

1.8.2 循环语句while和do…while

循环语句: 重复做一件事;
  while do…while
while(条件表达式){
循环语句;
}
循环需要注意的情况:
1、需要有循环的条件;
2、需要控制循环的次数;
do{
循环语句;
}while(条件表达式);
do…while 语句的特点:无论条件是否满足,都会执行至少一次;

1.8.3 选择控制语句if与if…else

if语句 : if(条件表达式){
执行语句;
}
if…else语句: if(条件表达式){
执行语句;
}else{
执行语句;
}
if…else if…else语句 : if(条件表达式){
执行语句;
}else if(条件表达式){
选择第一个满足条件的分支语句为分支入口; 执行语句;}
else{ 执行语句;
}

1.8.4 循环语句for与foreach

for(初始化表达式;条件表达式;循环后表达式){
循环语句;
}
for循环的执行顺序:首先执行初始化表达式,判断循环条件,如果条件返回值为true,执行循环语句,然后执行循环后表达式,再次判断循环条件……
for循环与while循环的关系:
1、for与while可以互换;
2、for循环可以将变量定义到初始化表达式中,如只需要将该变量应用在循环体中,建议使用for循环,可以及时释放内存空间;
  for循环的嵌套 :大圈套小圈的思想 例如:地球的公转自转,时钟的时针分针;
  无限循环:
while(true){
循环语句;
}
for( ;;){
循环语句;
}

终止循环:
break;
注意:1、break必须使用在switch或者循环语句中;
2、在switch或循环语句中,break单独使用时,下面不允许有代码语句;
3、默认情况下,break只能跳出语句所属的最近一层循环;
continue;
注意:1、continue是终止本次循环,继续下一次循环;
  如果想要指定循环跳出的位置,可以使用给循环添加标记的方式,跳出时指明跳出位置即可;
=flag1:for( ;;){
循环语句;
break flag1;
}
 foreach语法
      for (声明语句 : 表达式) {
         //代码句子
         }
  声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
  表达式:表达式是要访问的数组名,枚举,集合等,或者是返回值为数组的方法。

1.9数组

1.9.1 一维数组

Java 中定义数组的语法有两种:
type arrayName[];
type[] arrayName;
type 为Java中的任意数据类型,包括基本类型和组合类型,arrayName为数组名,必须是一个合法的标识符,[ ] 指明该变量是一个数组类型变量。例如:
int demoArray[];
int[] demoArray;
这两种形式没有区别,使用效果完全一样,读者可根据自己的编程习惯选择。

与C、C++不同,Java在定义数组时并不为数组元素分配内存,因此[ ]中无需指定数组元素的个数,即数组长度。而且对于如上定义的一个数组是不能访问它的任何元素的,我们必须要为它分配内存空间,这时要用到运算符new,其格式如下:
arrayName=new type[arraySize];
其中,arraySize 为数组的长度,type 为数组的类型。如:
demoArray=new int[3];
为一个整型数组分配3个int 型整数所占据的内存空间。
通常,你可以在定义的同时分配空间,语法为:
type arrayName[] = new type[arraySize];
例如:
int demoArray[] = new int[3];
数组的同时进行初始化(静态初始化),也可以在声明以后进行初始化(动态初始化)
可以通过下标来引用数组:
每个数组都有一个length属性来指明它的长度,例如 intArray.length 指明数组 intArray 的长度。

1.9.2 多维数组

多维数组的声名与使用和一维数组类似,每多一个[]符号,就多一唯,二维数组可以看作是嵌套了多个一位数组,三维数组就可以看成是嵌套了多个一二维数组,多维数组就是数组的嵌套

1.10 JAVA中的内存分配和堆栈问题

1)基本数据类型的存储原理:所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面,而Java语言里面八种数据类型是这种存储模型;
2)引用类型的存储原理:引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的;
区别:基本数据类型和引用类型的区别主要在于基本数据类型是分配在栈上的,而引用类型是分配在堆上的(需要java中的栈、堆概念)
基本数据类型的值传递,不改变原值,因为调用后就会弹栈,局部变量随之消失
引用数据类型的值传递,改变原值,因为即使方法弹栈,但是堆内存数组对象还在,可以通过地址继续访问
Java中到底是传值还是传址?
1,既是传值,也是传地址,基本数据类型传递的值,引用数据类型传递的地址
2,java中只有传值,因为地址值也是值(出去面试都说这种,支持者是高司令(java之父));

1.11成员变量和局部变量的区别

A:在类中的位置不同
成员变量:在类中方法外
局部变量:在方法定义中或者方法声明上
B:在内存中的位置不同
成员变量:在堆内存(成员变量属于对象,对象进堆内存)
局部变量:在栈内存(局部变量属于方法,方法进栈内存)
C:生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
D:初始化值不同
成员变量:有默认初始化值
局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
注意事项:
局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
基本数据类型变量包括哪些:byte,short,int,long,float,double,boolean,char
引用数据类型变量包括哪些:数组,类,接口,枚举

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值