java基础(补)

补一下前面的java基础,顺便复习一下

JAVA语言

        java语言,即是编译型语言,又是解释型语言

        首先,运行java的机制是先把java程序运用javac(compile)编译成class字节码文件,这里体现了java是一个编译型语言,之后,java利用其内置的jvm虚拟机将class文件解释运行,这里又体现了java是一个解释型语言。

        面试题

1.java语言有哪些特点?

        1.java其能长期存在于互联网语言中,其最大的一个特点便是面向对象,也包含其面向对象的三要素(封装、继承、多态)

        2.平台无关性:由于其虚拟机的存在,所以java有很强的跨平台性,即一次编写,到处执行,java编写的语言具有很好地可移植性。在引入jvm虚拟机后,java在不同的平台上运行不需要再次编译

        3.java语言就有很强大的安全性和可维护性

        4.多线程机制,c++语言没有内置的多线程机制,所以需要通过操作系统的多线程功能来进行多线程的程序设计,而java语言支持多线程机制,不用依靠外界。(多线程后续博客会学习到)

        5.网络编程:java语言支持网络编程,并且java本身就是为了简化网络编程而设计的,因此java语言不仅支持网络编程而且很方便(后续博客会学习到)

        6.编译与解释共存

2.什么是字节码?采用字节码的好处是什么

        java之所以可以一次编译,到处运行,一方面,Java的jvm对各种操作系统、平台都进行了操作定制,另一方面,对于java来说,无论在什么平台,都可以编译生成固定格式的字节码文件(.class)供jvm使用。

        之所以将其称为字节码,是因为字节码文件由十六进制组成,而jvm以两个十六进制为一组,即以字节为单位进行读取,在java中一般采用javac命令编译源代码为字节码文件。

        java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点,所以java程序运行时比较高效,并且,对于字节码并不专对于一种特定的机器,因此,java语言无需重新编译就可在不同的计算机上运行

数据类型与运算符

java其对应的数据类型只有两类,一类是基本数据类型,一类是引用数据类型

在内存中,对于这两种数据类型,他们都会在栈上分配一块空间,只不过基本数据类型存放的是基本的数据内容,而引用数据类型,存放的则是指向其具体数据内容的一个指针,其具体内容存放在堆内存中

开发步骤

1.使用记事本或者编译工具编译源程序,以.java为后缀名保存

2.使用javac命令编译.java文件,生成.class文件

3.使用java语言命令.class文件,输出程序结果

\n:换行 \t:水平制表位置 //:单行注释 /**/:多行注释

java编码规范

1.类名使用public修饰

2.一行只写一条语句

3.{}的使用位置{跟在使用语句后面 }回车另起一句

4.代码缩进

数据类型说明

char(字符型):用于存储单个字符

int(整型):用于存储整数

double(双精度):用于存储小数

String(字符串):用于存储一串字符

变量声明及使用

声明变量:根据数据类型在内存中申请空间        数据类型 变量名;(int money;)

赋值:将数据存储至对应的内存空间        变量名=数值;(money = 1000;)

合并:数据类型 变量名 = 数值;

使用变量,即取出数据使用

变量命名规范:简短且能清楚地表明变量的作用,通常第一个单词的首字母小写,其后单词的首字母大写

自动数据类型转换规则

规则1:如果一个操作数为double类型,则整个表达式可提升为double型

规则2:满足自动类型转换的条件:

两种类型要兼容:数值类型(整型和浮点型)互相兼容

目标类型大于源类型:double类型大于int型

强制类型转换:int b = (int)10.2; 为了一些计算目的,我们往往会进行强制类型转换,但这样会造成一部分精度损失,所以在一些要求严格的软件中我们应尽量避免使用这样的强制转换

运算符
        赋值运算符

=:将等号右边的值赋给等号左边的变量

        算术运算符

+:两个操作数进行相加

-:两个操作数进行相减

*:两个操作数进行相乘

/:两个操作数进行除法运算,结果取整

%:两个操作数进行取余运算,结果取余

        关系运算符

<、>:比较两个操作数的大小

==:判断两个操作数是否相等

!=:判断两个操作数是否不相等

>=:判断第一个操作数是否大于等于第二个操作数

<=:判断第一个操作数是否小于等于第二个操作数

运算符优先级:

最高:小括号        最低:赋值运算符(=)

优先级:算术运算符>关系运算符>逻辑运算符

键入内容

Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
选择结构
        if选择结构
if(条件){
    //代码块
}

 多重if选择结构

if(){
    //代码段
}else if(){
    //代码段
}else if(){
    //代码段
}else{

}

  嵌套if选择结构

        switch选择结构

其对于if的区别在于不能进行判断

//表达式可以是int、short、byte、char、enum(枚举)、String类型
switch(表达式){
    case 常量1: //计算表达式的值
        语句;
        break;
    case 常量2:
        语句;
        break;
    default: //default可以省略,这里表示如果没找到匹配的值则执行的语句
        语句;
        break;

}

case 1>2 这种情况不可以

case 1+1 这种情况可以 只要结果是常量值就可以,即当条件是常量值是可以使用switch来实现判断

case 与default位置可以进行调整(多重分支且条件判断为等值判断的情况)

        面试题

1.switch能否作用在byte上,能否作用在long上,能否作用在String上

Java5以前switch(expr)中,expr只能是byte、short、char、int

从java5开始,java1引入了枚举类型,expr也可以是enum类型

从java7开始,expr可以是字符串类型(String),但是长整型(Long)在目前所有的版本中都是不可以的

循环结构

循环结构的特点:循环条件,循环操作

while循环(当型循环):起始、终结、结束条件

while(循环条件){ //符合条件,循环继续执行。否则,循环退出
    循环操作;
    //循环中被重复执行的操作
}

do-while循环(直到型循环) --先至少执行一次,再进行while的判断

do{
    循环操作; //先执行一遍循环操作
}while(循环条件); //分号不能少
//符合条件,循环继续执行;否则,循环退出

while循环 与 do-while循环区别

1.语法不同

2.执行次序不同

3.如果不满足循环条件:while循环一次都不会执行,do-while循环不管任何情况都会执行一次

for循环(for 比while 更简洁)

//对于参数初始化,可以定义多个变量 int a,int b
//对于条件判断,在一个for循环里只能有一个 a<10
//对于更新循环变量,不同的变量可以定义不同的步长 a++,b++
for(参数初始化:条件判断:更新下循环变量){
    循环操作;
}

break:改变程序控制流(通常与条件语句一起使用)

1.switch:跳出switch语句

2.循环:跳出循环

continue:结束当前循环,进入到下一次循环

只能用在循环里,本次循环剩下的语句不执行

        面试题

        1.break,continue,return的区别及作用?

  •         break在循环中跳出上一层循环,不再执行循环(结束当前的循环体),在switch语句中则是跳出switch语句,如果没有break则switch会一直把下面的选择条件都执行完。
  •         continue跳出本次循环,继续执行下一次循环(结束正在执行的循环,不再执行下面的操作,进图下一个循环中)
  •         return 程序返回,不再执行下面的方法,结束当前的方法直接返回
        二重循环

        二重循环:一个循环体内又包含另一个完整的循环结构

  • while循环里嵌套while循环
  • do-while循环里嵌套do-while循环
  • while循环里嵌套do-while循环
  • for循环里嵌套for循环
  • ........

数组

数组是一个变量,存储相同数据类型的一组数据

对于数组来说,其本身就是一个对象,具有相应的属性和方法

数组一旦初始化量,容器大小就改变不了

一旦定义数据类型,数据类型就改变不了

声明一个变量就是在内存空间划出一块合适的空间

声明一个数组就是在内存空间划出一块连续的空间

//声明数组的几种方式
int[] array = {5,8,3};
int[] array = new int[5]; //java写法
int array[] = new int[5]; //c写法

数组(基本元素):标识符、数组元素、元素下标、元素类型

优势:随机访问,数组具有索引这一特点,所以对于其他数据类型来说,数组可以很快地找到需要找的对象,随机访问也是数组具有的一大亮点

劣势:空间大小,由于数组的空间大小是确定的,所以数组的容量不能进行修改,同时数组长度固定不变,我们也要考虑如何避免数组越界的问题

        数组的使用步骤

  1. 声明数组
  2. 分配空间
  3. 赋值
  4. 处理数据

//数组类:Arrays --Arrays的sort方法
Arrays.sore(数组名) //利用java写好的排序来将指定的数组进行升序排序
Arrays.toString(数组名) //将数组转换为字符串输出
Arrays.copyOf(array,array.length+1) //复制数组,并将其扩容一个空间

数组赋值

补充:

1.让当前虚拟机终止运行

System.exit(-1);

2.处理系统异常 ->增强程序的健壮性

java常见异常

NullPointerException:空指针异常,当对象不存在没有分配空间时,调用了对象的属性和方法,就会导致出现该异常

InputMismatchException:输入不匹配异常,当使用Scanner对象后,如果接收的数据类型与目标类型不匹配时,会出现异常

ArrayIndexOutOfBoundException:数组下标越界异常。当存储数组元素时,向一个超出了数组空间大小的下标处插入或者查询内容,就会出现该异常

3.Scanner对象的hasNextInt()方法对键入的数值进行判断,判断是否为整数,返回true和false

4。字符串常量池包括全局字符串常量池(提升性能减少内存开销)、class文件常量池、运行时常量池

5.基本数据类型只占两块空间,引用数据类型最少占两块空间

6.调试 程序调试 ->打断点 ->指向 ->解决问题

以上就是本篇博客的所有内容了,面试题是根据一些网上的他人总结结合而写,写的可能不好,如有疑问还请评论区多多提出!

  • 29
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余阳867

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值