Java总结

Java基础

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

java的体系结构

  • JavaSE :标准版
    定义了Java的基本语法

  • JavaME :移动版
    以前诺基亚用
    现在GPS和机顶盒用这个

  • JavaEE : 企业版
    可以分为:
  1. B/S :基于浏览器和服务器的架构模式
  2. C/S : 基于客户和服务器的架构模式

javaEE还可以用于JavaWeb开发——>全栈工程师

每一次修改代码,都必须重新编译。


Java代码规范

  1. 文件名与类名必须一致;
  2. 类名的首字母大写;
  3. main函数是程序入口,四个元素必不可少:
    public、static 、void 、 String [] args;
  4. 一行只写一条语句;
  5. 代码缩进;
  6. 常量的变量名全部大写
  • 内存地址是16进制数据;
  • 变量名一定要符合规则:
    驼峰式命名法:第一个单词全部小写,其他单词的首字母大写

  • java的八种基本数据类型:
  1. byte : 1个字节,8位;
  2. short : 2个字节, 16位;
  3. int : 4个字节,32位;
  4. long : 8个字节,64位;
  5. float : 4个字节,32位;
  6. double : 8个字节,64位;
  7. char : 2个字节,16位;
  8. boolean :1/8个字节,1位。

int可以赋值给float,反之不亦然;
强制类型转换会砍值;

Scanner

  1. import java.util.Scanner;
  2. Scanner scanner = new Scanner(System.in);
  3. scanner.nextInt();
  • 只有== 和!= 可以施法于任何数据类型,其他关系运算符只能用于数值类型;
  • 短路与和短路或比单纯的与和或效率更高;
  • String类型的值判断是否相等不能用==,要用equals方法进行判断;
  • switch支持的数据类型:int、short、byte、char、枚举类型、String类型;

数组

  • 数组长度一旦确定,就不能修改;
  • null只能赋给引用类型;

数组工具类

java.util.Arrays
提供了操作数组的方法,例如排序,查询等。

boolean Arrays.equals(array1, array2);
比较两个数组是否相等

Arrays.sort(array);
变成升序排序。没有返回值。

String str = Arrays.toString(array);

Arrays.fill(array, val);
将数组里面的值全部变成val。

Arrays.copyOf(array, length);
扩展伸缩数组,返回一个新的数组。

int Arrays.binarySearch(array, val);
返回查询值在数组里面的最后一个匹配值的下标。
返回负数就证明找不到。

Java高级

程序在运行期:

  1. 将编写好的类加载到JVM中,有了模板;
  2. 根据需求,通过模板(类)来创建对应的对象,完成业务需求。

类与对象的区别:

  1. 类是静态的,写完之后就存在于硬盘中。
  2. 对象是动态的,随着程序的运行而创建,同时随着程序的关闭而销毁。
  3. JVM中类只有一份,对象可以无数份也可以没有。

垃圾回收机制GC:

是一个独立的巡查线程,GC是一个定时任务,隔一段时间执行一次。

为什么null不能赋值给基本数据类型?

因为null是地址,而基本数据类型在栈中只能存数值不能存地址。

每个类默认有无参构造函数,当你自己定义一个有参构造函数后,无参构造函数就消失了!

eclipse可以自动生成toString()啊,构造函数什么的,在source选项里面!

传参

  • 基本数据类型传递的是变量的值;
  • 引用类型传地址;

this

只能写方法体里面。
通常情况下,在类的方法中的具体代码,this可加可不加。
当方法中的参数和属性名一致时,通过参数名无法区分参数和属性时,需要通过this来修饰属性。

this(参数) 调用有参构造;
this() 调用无参构造;
它们只能在构造函数内调用。
并且this()必须写在方法体内第一行!

方法重载

  1. 必须在同一个类中;
  2. 方法名相同;
  3. 参数列表不同;
  4. 与返回值无关;
  5. 与访问权限修饰符无关。

动态参数

如何让参数个数不固定?
在参数列表中数据类型后面加上三个点。
动态参数实质上是一个数组,根据外部传入的参数个数来动态生成一个数组,记录所有的参数。

成员变量和局部变量

成员变量:定义在类中,方法体外的变量,属性
局部变量:定义在类中同时也存在于方法体中的变量

面向对象的四大特征

封装、继承、多态、抽象

封装

定义

将类的某些信息隐藏在类的内部,不允许外部程序直接访问这些信息,外部只能通过该类提供的特定方法来实现对隐藏信息的操作和访问。

如何实现

  1. private
  2. setter和getter
  3. setter里面放一点控制语句

有工具可以自动生成setter和getter

static静态修饰符

可以修饰:

  1. 成员变量:将之变成静态变量,使之可以通过类来访问;
  2. 成员方法:同上;
  3. 代码块:写在类中,方法之外,并且用花括号包裹起来的一段代码就叫做代码块。当程序访问该类时,自动执行代码块中的语句。
    静态代码块:当Java虚拟机(JVM)加载该类时,执行该代码,并且只执行一次。如果有多个静态代码块,那么按顺序执行。

在静态方法中比如main,不能访问该类的非静态属性,可以访问该类的实例化对象的非静态属性。

main中不能访问该类的非静态方法,可以访问对象的非静态方法。

静态方法如main里面不能用this!

类的构造方法用于创建类的实例对象,类的静态代码块用于初始化类,给类的静态变量赋值

全部评论

相关推荐

03-31 14:46
已编辑
门头沟学院 Web前端
励志成为双港第一ja...:这其实很正常,离的太远了,他认为你不会来,就为了混个面试,而且成本很高,实习生都优先选本地高校。吃了地域的亏,所有很多时候地域可能比院校层次更重要。
点赞 评论 收藏
分享
04-16 10:27
已编辑
美团_Saas_后端开发
今天周一休息,突发奇想写一篇阶段总结。如题,我已经去了一个和Java彻底毫无关联的行业。曾经我以为自己能在计算机行业发光发热,拿到美团offer那会感觉自己天都亮了。没想到刚入行一年多就当了逃兵。从最开始的热爱到现在一看到代码就厌恶,不知道自己经历了什么。所以我去干什么了?答案是:在成都当了租房销售。上班那会压力大了就念叨着去干租房中介,但是一直下不去这个决心,想着自己学了四年多的计算机知识,终究还是不甘心。终于在某一天准备八股文的时候,看着无数篇和工作内容关系不大的理论知识,那一刻下定决心,决定尝试一下销售行业,也算是给自己一个交代。后面阴差阳错的投了成都自如去当租房管家,没想到面试很顺利,在当天一百多个面试的人里面,我成为了为数不多通过的几个幸运儿之一。目前已经培训通过,正式入职,也开了单,有压力但是每天过得很开心,真心喜欢那种和人交流的感觉,哪怕是最后没有选择找我租房。说这些也是想告诉那些大三,大四正在找Java实习而焦虑的同学:你们现在还年轻,选择很多,容错率也很高,可以尽情去尝试自己喜欢的行业和工作。不用因为某一次的面试没通过或者简历石沉大海而焦虑,更不用因为身边人都在挤编程的独木桥就强迫自己跟风。也算是自己的碎碎念吧,也希望自己能在新的领域取得一点小成就。也祝牛油工作顺利!
沉淀小子:干啥都不丢人啊,生存是必须要的,销售很考验一个人综合素质能力的,好的销售人脉和资源可不比写字楼的白领差啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务