文章目录
- java基础
- java的产物
- c/s与b/s的区别
- JVM、JDK、JRE
- IDE
- 数据类型
- 数据转化
- 堆和栈
- 什么是按值传递?什么是按引用传递
- static、final、static final的区别
- 逻辑或和短路或
- ==和equals的区别
- Stringbuffer和Stringbuilder的区别
- Switch能做什么类型的判断
- 枚举是什么类型,有什么用?
- break和continue的区别
- 数组使用4步骤:
- length、length()、size()区别
- 什么是泛型?为什么使用泛型?泛型擦除?
- int 和 Integer 有什么区别
- 类与对象
- 面向对象和面向过程的对比
java基础
java的产物
- Applet小应用程序。运行在web环境下。功能比较单一,比如舞动的LOGO。目前用JS替代。
- Application应用程序,c/s模式 c客户端(需要安装软件的应用程序)/s服务器。QQ
- WEB技术(前端/后端)B浏览器/S服务器
c/s与b/s的区别
C/s模式:是`客户端/服务器`(Client/Server)模式,主要指的是传统的桌面级的应用程序。比如我们经常用的QQ。
B/S模式:是`浏览器/服务器`(Browser/Server)模式,主要指的是web应用程序,就像你说的电子商务网站,如淘宝,阿里巴巴等。
- 相对于C/S模式的应用程序来说,B/S模式最大的优势在于客户端只要有浏览器就可以运行。
- 而C/S模式的应用程序需要在客户端进行安装,而且升级也不太方便。
- 而B/S模式的应用程序对于客户端来说,永远都是最新版本的。
JVM、JDK、JRE
JVM:java虚拟机
JDK:java开发工具包
JRE:java运行环境
JDK>JRE>JVM
IDE
开发环境:
eclipse、Myeclipse、idea
数据类型
原始数据类型:byte、char、short、int、float、long、double、boolean(按序)
引用数据类型:除了8大类型以外都叫引用数据类型,int[]数组是引用类型。String引用类型
数据转化
自动类型转化:类型必须兼容(Int double float),目标类型大于原类型
强制类型转化:类型必须兼容(Int double float),精度损失
堆和栈
栈是后进先出的,用来存储原始数据类型的值
堆是用来存储引用数据类型的值,栈是用来存储引用数据类型的地址
什么是按值传递?什么是按引用传递
按值传递:传递的是原始数据类型,在方法中对数据进行修改后不会影响外部的数据
引用传递:传递的是引用数据类型,在方法中队数据修改后直接影响外面的数据
对象是哪种传递?---引用
static、final、static final的区别
java中static、final、static final的区别
逻辑或和短路或
短路或(||):左边一项为真,则为真,不会判断右边
逻辑或(|):左边为真,还是会判断右边
短路与(&&):左边一项为假,则为假,不会判断右边
逻辑与(&):左边为假,还是会判断右边
==和equals的区别
== :基本数据类型比较的是值;
引用类型比较的是地址值。
equals(Object o):
1)不能比较基本数据类型
2)a.比较引用类型时(该方法继承自Object,在object中比较的是地址值)等同于”==”;
2)b.如果自己所写的类中已经重写了equals方法,那么就安装用户自定义的方式来比较俩个对象是否相等,如果没有重写过equal方法,那么会调用父类(Object)中的equals方法进行比较,也就是比较地址值。
Stringbuffer和Stringbuilder的区别
共同:都是可变字符串;String是不可变字符串
StringBuffer:线程安全,在多线程情况下建议使用
StringBuilder:非线程安全,平常(非多线程)情况下建议使用,速度更快
Switch能做什么类型的判断
类型为 char、byte、short、int
枚举
字符串(1.7版本后)
枚举是什么类型,有什么用?
枚举:定义一些固定的常量变成一个集合,设置的时候只能从中选择一个。
作用:规范了参数的形式,可以不用考虑类型的不匹配
break和continue的区别
Break:用于终止某个语句块的执行。用在循环语句体中,强行退出循环。
Continue:用在循环语句体中,用于终止某次循环过程,跳出循环体中continue语句下面未执行的循环,开始下一次循环过程。
数组使用4步骤:
- 声明数组,int []a int a[] String strs[]
- 分配空间(数组在定义的时候必须指定大小,后期不能更改) a=new int[5]
- 赋值(根据下标进行赋值) a[0]=5; a[1]=5, a[2]=4 下标0-(length-1)
- 处理数据(根据下标进行赋值) a[0]=a[0]+10;
length、length()、size()区别
length:数组的长度
length():字符串的长度
size():泛型集合的长度
什么是泛型?为什么使用泛型?泛型擦除?
泛型:本质是参数化类型。
为什么要使用:创建集合的时候,往集合里面添加数据,再次取出时,集合会忘记这数据类型,该对象的编译类型就会变成Object类型,否则如果想要变回原来的数据类型的时候,就要强制进行转换。创建集合的时候,我们就指定集合类型,避免这个过程。
泛型擦除?Java的泛型处理过程都是在编译器中进行的,编译器首先会生成bytecode码,这个过程是不包括泛型类型,泛型类型在编译的时候是被擦除的,这个过程及泛型擦除。
泛型擦除的过程:
1将所有泛型参数用顶级父类类型替换
2擦除所有的参数类型
int 和 Integer 有什么区别
Int是java的原始数据类型,Integer是引用数据类型,是int的封装类。
integer缺省值为空,int为null报错
类与对象
面向对象和面向过程的对比
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
可以拿生活中的实例来理解面向过程与面向对象,例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用不同的方法来实现。
如果是面向对象的设计思想来解决问题。面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。