文章目录

  • 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的产物

  1. Applet小应用程序。运行在web环境下。功能比较单一,比如舞动的LOGO。目前用JS替代。
  2. Application应用程序,c/s模式 c客户端(需要安装软件的应用程序)/s服务器。QQ
  3. WEB技术(前端/后端)B浏览器/S服务器

c/s与b/s的区别

C/s模式:是`客户端/服务器`(Client/Server)模式,主要指的是传统的桌面级的应用程序。比如我们经常用的QQ。
B/S模式:是`浏览器/服务器`(Browser/Server)模式,主要指的是web应用程序,就像你说的电子商务网站,如淘宝,阿里巴巴等。
  1. 相对于C/S模式的应用程序来说,B/S模式最大的优势在于客户端只要有浏览器就可以运行。
  2. 而C/S模式的应用程序需要在客户端进行安装,而且升级也不太方便。
  3. 而B/S模式的应用程序对于客户端来说,永远都是最新版本的。

JVM、JDK、JRE

JVM:java虚拟机
JDK:java开发工具包
JRE:java运行环境
JDK>JRE>JVM

java is 开头的属性 java is-a has-a_泛型

IDE

开发环境:
eclipse、Myeclipse、idea

数据类型

原始数据类型:byte、char、short、int、float、long、double、boolean(按序)
引用数据类型:除了8大类型以外都叫引用数据类型,int[]数组是引用类型。String引用类型

数据转化

自动类型转化:类型必须兼容(Int double float),目标类型大于原类型
强制类型转化:类型必须兼容(Int double float),精度损失

java is 开头的属性 java is-a has-a_java_02

堆和栈

栈是后进先出的,用来存储原始数据类型的值
堆是用来存储引用数据类型的值,栈是用来存储引用数据类型的地址

什么是按值传递?什么是按引用传递

按值传递:传递的是原始数据类型,在方法中对数据进行修改后不会影响外部的数据
引用传递:传递的是引用数据类型,在方法中队数据修改后直接影响外面的数据

对象是哪种传递?---引用

static、final、static final的区别

java中static、final、static final的区别

逻辑或和短路或

短路或(||):左边一项为真,则为真,不会判断右边
逻辑或(|):左边为真,还是会判断右边
短路与(&&):左边一项为假,则为假,不会判断右边
逻辑与(&):左边为假,还是会判断右边

==和equals的区别

== :基本数据类型比较的是值;
    引用类型比较的是地址值。

equals(Object o): 
    1)不能比较基本数据类型
    2)a.比较引用类型时(该方法继承自Object,在object中比较的是地址值)等同于”==”;
    2)b.如果自己所写的类中已经重写了equals方法,那么就安装用户自定义的方式来比较俩个对象是否相等,如果没有重写过equal方法,那么会调用父类(Object)中的equals方法进行比较,也就是比较地址值。

java is 开头的属性 java is-a has-a_java is 开头的属性_03

Stringbuffer和Stringbuilder的区别

共同:都是可变字符串;String是不可变字符串 StringBuffer:线程安全,在多线程情况下建议使用
StringBuilder:非线程安全,平常(非多线程)情况下建议使用,速度更快

Switch能做什么类型的判断

类型为 char、byte、short、int
枚举
字符串(1.7版本后)

枚举是什么类型,有什么用?

枚举:定义一些固定的常量变成一个集合,设置的时候只能从中选择一个。
作用:规范了参数的形式,可以不用考虑类型的不匹配

break和continue的区别

Break:用于终止某个语句块的执行。用在循环语句体中,强行退出循环。
Continue:用在循环语句体中,用于终止某次循环过程,跳出循环体中continue语句下面未执行的循环,开始下一次循环过程。

数组使用4步骤:

  1. 声明数组,int []a int a[] String strs[]
  2. 分配空间(数组在定义的时候必须指定大小,后期不能更改) a=new int[5]
  3. 赋值(根据下标进行赋值) a[0]=5; a[1]=5, a[2]=4 下标0-(length-1)
  4. 处理数据(根据下标进行赋值) 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、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。