java基础总结必看

2024-05-07

java基础总结必看(精选10篇)

篇1:java基础总结必看

Java基础

1.JAVA程序是由1个或者N个CLASS组成的程序

2.编写---javac进行编译------java进行执行

3.类名的命名:规范:第一个字母要大写 第一字母必须是字母 下划线美圆符号 人民币符号//

4.不是第一个字母的话 可以是数字

5.文件名和类名的关系 如果class前面没有public 是可以不一样的 但是如果有的话 必须一样

6.两个BYTE SHORT类型进行加减乘除的时候 返回的结果是int类型

/*

需求:定义一个hello world小程序。

步骤:

1,通过class关键字定义一个类。将代码都编写到该类中。

2,为了保证该的独立运行。在类中定义个主函数。格式public static void main(String[] args)3,保存成一个扩展名为java的文件。

4,在dos控制台中通过javac工具对java文件进行编译。

5,在通过java命令对生成的class文件进行执行。

*/

class Demo//定义一个类。

{

//主函数。

public static void main(String[] args)

{

//输出语句。

System.out.println(“hello haha”);

}

}

6.字符串数据和任何数据使用+都是相连接,最终都会变成字符串。

System.out.println(“5+5”+(5+5));//“5+5=55”

转义字符:通过 来转变后面字母或者符号的含义。

n:换行。

b:退格。相当于backspace。

r:按下回车键。window系统,回车符是由两个字符来表示rn.t:制表符。相当于tab键。

7.if else 结构 简写格式: 变量 =(条件表达式)?表达式1:表达式2;

三元运算符:

好处:可以简化if else代码。

弊端:因为是一个运算符,所以运算完必须要有一个结果。

class OperateDemo

{

public static void main(String[] args)

{

int x= 7;

//逻辑运算符用于连接boolean类型的表达式。

//x>3 & x<6 = true & true = true;

/*

true & true = true;

true & false = false;

false & true = false;

false & false = false;

& : 只要两边的boolean表达式结果,有一个为false。那么结果就是false。只有两边都为true,结果为true。

true | true = true;

true | false = true;

false | true = true;

false | false = false;

| : 两边只要有一个为true,结果为true。

只有两边都有false,结果为false。

^ : 异或;就是和|有点不一样。当true ^ true = false;

true ^ true = false;

true ^ false = true;

false ^ true = true;

false ^ false = false;

^ : 两边相同结果是false。

两边不同结果是true。

&和&&的特点:

&:无论左边是true是false。右边都运算。

&&:当左边为false时,右边不运算。

|:两边都参与运算。

||:当左边为true。右边不运算。

int n = 3,m = 8;

System.out.println(“n=”+n+“,m=”+m);

1,通过第三方变量。

/*int temp;temp = n;n = m;m = temp;

2不用第三方变量。= 3 +8;3 = 113;n = n + m;//如果n和m的值非常大,容易超出int范围。m = nm;n = n ^ m;m = n ^ m;//(n^m)^m;n = n ^ m;//n ^(n ^ m)System.out.println(“n=”+n+“,m=”+m);

if和switch语句很像。

具体什么场景下,应用哪个语句呢?

如果判断的具体数值不多,而是符合byte short int char这四种类型。虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。

其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用

范围更广。

篇2:java基础总结必看

(1)通配符的上界

? extends myClass其中“?”就是通配符,其上界为myClass,这句话代表myClass或其子类。List apples = new ArrayList;Listfruits = apples;

(2)通配符的下界

? super myClass表示通配符的下界为myClass,这句话代表myClass的超类型直至Object。Listfruits = new ArrayList();List= fruits;

(3)无界通配符

篇3:java基础总结必看

面对大学国内多年大学扩招, 进入大学计算机系的学生成绩逐渐走向一般。尤其是高职院校的计算机系学生, 在面对传统计算机C语言的学习时, 很难理解其中的一些章节, 比如指针 (Pointer) 和递归 (resursion) 算法, 数据结构 (Data Stucture) 。为此很多高校为了迎合学生的水平, 积极的降低课程难度, 甚至提出使用Java语言来代替C语言作为计算机的基础教程, 这样可以节省更多的时间讲解实用性的计算机知识。其实我大学刚毕业不久也有这个想法, 觉得C语言用途没有Java语言来的广, 而且难度不低, 还认为一门工具语言, 越简单越好, 做出的软件的健壮性可靠性越高。其实我的想法也没错, 可不适合在计算机基础阶段将Java语言替换成C语言。

那为什么不选一个简单的Java语言作为入门的基础课程呢, 我们必须权衡利弊, 当然我们不是非要像孔乙己那样说出回字有几种写法才算有难度, 或者对初学者有虐待的心态。下面我列出C语言的一些优势所在。

一) C语言够难

二) C语言更能区分学生的能力

三) C语言会让学生变得勤快

四) C语言更能培养合格的程序员

下面让我们正对上述的几点进行简单轻松的讨论

C语言才够难度, Java在做为基础语言中的难度是远远不够的。大学中我对计算机的兴趣非常偶然, 其实就是一个晚上占据了一个灯光良好的座位, 打算认真做作业的时候, 一位教dbase的老师带着学生进驻教师, 打算清场, 当时急中生智, 就说我也选修那位老师的课程, 在一个小时的听课中发现dbase似乎没那么难, 后来参加考试高分通过, 很容易的通过了。在休息期间请教老师, 被告知如果学好软件开发, 两门课程必须搞定, 一个就是C语言, 一个就是数据结构, 如果过不了这两关, 建议我还是老实的完成我的本专业。后来我花了两个学习才将这两门课程弄出一点头绪。现在想着当年在386机器上调试C语言程序的时候, 突然很佩服自己的毅力。

我见过高中很多英语稍微好点的同学, 可以在中华学习机上用basic编写出很优秀的代码, 那时候让我佩服的不得了。大学毕业后我从化工转到计算机软件开发方面来, 发现很多原本我认为是软件高手的同学在软件编程上没多大建树, 也许是他们没兴趣, 闲聊的时候问起来, 他们大多数被计算机两个入门的基础课程给吓楞了, 一个是C语言, 一个是数据结构。面对大量的指针, 其实都会晕头转向, 不过也许只有这样的难度, 淘汰那些知难而退的人才会留下只对软件开发有兴趣的学员, 或是激起那些学习者的知难而上的斗志。在上个世纪80年代, 会dbase的人是个高级程序员, 到了90年代, 会foxbase或者foxpro的算是个中级程序员, 到了二十一世纪, foxpro的学习者还是很多, 大部分都转行了, 除了少数毅力鉴定这改用其他语言, 要是不转行或者不改用其他高难度的开发语言和工具, 估计从事foxpro开发的人都饿趴了现在。但是那些从事C语言, 非常轻易的转移到了Java, 或者C++开发, 目前苹果系统IOS上的应用开发其实也是使用C语言的变种Object C。但是对于那些掌握VB和foxpro或者是Delphi的人来说, 转行的难度太高了, 因为他们早就接受了更简单的入门教程, 难以适应难度稍大的业务。许我们可以这么说, 别让基础语言太难, 这样娇惯了学生, 以后让他们转型实在难。人人都这样, 由难转易行, 由易转难止。

别轻易放弃C语言中的指针章节和递归及其数值算法这块内容, 即使有些概念毫无用处, 但是能让你变得头脑灵活, 思维敏捷, 高度的抽象能力和推理能力, 这样才能培养出合格的程序员, 岗位上才能有竞争力, 如果连这个都过不了, 建议这些学生改行去学习哲学, 只有马列主义基本无需很多的推理和思考, 没有了挑战只要在考试之前背一下基本都能过的。Java语言中为了简化和避免用户出错, 省去了指针这类让人头疼的东西, 造成了Java语言过于简单, 这样即使是Java语言考试得了100分, 也许这人根本不知道内存是如何分配的, 递归是如何实现的, 线性链表如何操作, 文件读写是如何进行的。他们还根本不会因为学习了一门语言会加深对计算机体系结构的认识。有人挖空心思的想让Java来代替C语言或者精简C语言来做为基础教程, 这样一来学生只会做最简单的计算机练习题, 花很少的心思就完成课后作业, 如此体贴学生犹如帮学生都把代码模块或者框架做好了让他们来完形填空了。但让老师和学生皆大欢喜, 老师教学效果不错, 学生考试通过, 可是这样学生可否面对困难和挑战呢?

C语言才有区分能力。大学的我最怕的课程就是我自学的C语言和数据结构, 还有数学。因为这三门课程我要认真学习才能在分数榜上列在前头。而其他的课程只要花一点点时间就可以了, 花更多的时间我也很难拿到满分。其他一些课程因为简单, 所以无法区分开来, 这样好坏, 优劣在学生中就无法区分开来。Java中没有了指针, 弱化了递归算法的基本原理, 用集合类来代替传统的数据结构, 让你在学习过程中无法达到思维的深度, 缺少逻辑推理, 归纳演绎, 抽象思考的锻炼, 你没有了课程中被补考重修的心理压力。而且通过多花点时间学习你就可以考试得个优秀, 面对扎堆的优秀学生, 如何区分能力远远成了Java语言C语言的一个难处, 可是C语言, 只要有指针和递归算法里面, 试卷上的分数会因为能力而拉开很大的距离。

学习C语言的学生会很勤快的。因为C语言的类库远远不及Java的类库那么多。要做一个自定义的打印等等都要写下一堆复杂的代码。没有了Java的集合类Collection和集合工具类Collections的便利性, 为了完成一个简单的数据存储你必须自己设计一个数据结构, 实现存储和读取排序之类的操作。在操作过程中学生小心谨慎的使用指针, 认真初始化每个变量。没有了插件的帮忙, 要和其他系统接口你必须自己写下大量的代码, 调试大量的程序, 最后你会发现学生变得勤快, 认真和谨慎。在Java学习中, 太多现成的特性让你非常省力。面向对象OOP代替指针和递归调用, 用封装和继承简化开发流程, 多态和重载让你使用的称心。没有了C语言的难度, Java语言学习没有机会面对心智的挑战, 更会偷懒和松懈。

有些公司招聘的时候很有意思, 总是做题目的时候让人家实现一些算法, 推荐使用Java语言。其实我面对很多新员工面试, 都是推荐让用C语言, 当然可以使用Java语言, 我会对使用VBSript和VB语言者产生一种不良的感觉, 总觉得他们不适合做程序员。如果有面试者在C语言实现过程中做的和Java一样好, 我会举的他同等Java实现者更有潜力, 因为C语言是一门有难度的语言。你见过哪个C语言好的人Java做的不好的, 但是你见过很多Java高手不会C语言的中等难度的练习。公司有时候业务需要, 从Java转移到微软.Net下的C#语言, C语言基础扎实的能在一周内参加实质性的任务了, 而那些会VB, Vbscrit和通Java但是C基础差的人, 半个月后都很难上手。一个C语言扎实的程序员一定是个合格的程序员, 当然反过来说未必成立。基础课程毕竟不是专业课程, 那那些实际的工作技能留给了后续的专业课程来完成或者是培训机构, 企业, 政府。

我在高校还从事一些基础语言教程, 发现很多教学中都强调要让课程变得简单, 其实上Java课程的时候似乎没什么东西好讲的, 不用复杂的算法, 不用遇上讨厌的指针。总不会让我花一节课时来讲解简单变量和封装类的差别了吧, 这种基础教学让底子稍微好点的学生三分之一的时间就掌握了, 那剩下的时间只好打瞌睡了。当然不是说Java不好, 其实在编程应用中Java的地位都是老大地位。我2004年做的domino OA软件使用的是Java来扩展其中的功能, 后来手机应用开发使用J2ME也是Java, 现在的平板开发Android也是Java。虽然是Java的创始者Sun被Oracle并购后, 但也不改这个趋势, 可在高校中作为基础语言, 缺少分区度, 难度, 会让学生偷懒, 难以培养优秀的程序员Java总是不合时宜, 还是让我们回到传统的C语言去。

如今的学生变懒了, 是因为我们宠着, 恶性循环下去他们什么苦都不会吃, 所以第一门的计算机语言课程不能让Java替代了C语言, 让他们过了这座山, 剩下的路就平坦了, 欲成大器, 先苦其心志。

摘要:从C语言四个固有的基础语言优势, 分析Java作为基础语言教学的不足, 结合自身的十多年IT从业经验, 以轻松漫谈的方式, 展开对C语言和Java语言作为基础教学语言中的优劣分析。

关键词:Java语言,C语言,课程难度,基础课程,适合教学

参考文献

[1]《Java编程思想》[Thinking in Java]作者:Bruce Eckel ISBN:9780131872486

篇4:java基础总结必看

关键词:企业实践 Java软件项目开发岗位 职业能力 教学改革

笔者积极响应学校号召,暑期期间到济南维库软件科技有限公司进行了一个月的企业实践,顺利完成企业的工作任务,现将一个月的实践收获总结如下。

一、转化角色,虚心、耐心、专心做一线有责任心的企业员工

1.遵守企业制度,认真承担并履行责任

在一个月的企业实训中,笔者谨记学校领导的嘱托,严格要求自己,认真遵守企业制度,从未发生迟到、请假、早退现象,进入公司后将自己由受人尊重的老师转变为一名初到公司的企业员工,做到慎独、慎微、慎初,强化工作责任心,主动处理好分内与分外的相关工作,勤奋扎实地工作,不敷衍应付,认真对待工作中的每一个问题,完成企业交给的每一个工作任务。

2.不畏工作困难,耐心解决项目开发中的各种问题

企业实训为真实软件开发项目:山东高速集团采购系统。由于项目庞大复杂,涉及知识点琐碎,项目开发工作困难重重,笔者认真细致学习企业教师讲解的知识点,分析需求说明书,钻研软件算法和代码的实现,面对项目中遇到的各种错误代码和异常,耐心查错排错,认真解决软件开发过程中出现的各种错误,并及时记录解决方案和问题,为下一步软件开发工作和教学实训积累了丰富的经验。

3.放下教师架子,虚心向企业有经验老师请教

学校主要工作是教书育人,企业工作是开发高质量软件产品。工作任务的不同,使笔者慢慢放下了教师的架子,主动地向实践操作能力较强的“小兄弟”请教。虽然他们年龄较小,学历不高,却有丰富的项目开发经验。笔者向他们虚心请教,反复讨教工作中不明白的问题,从他们那里学到了课本上没有的工作技巧和技术,更领略了他们一丝不苟、沉着耐心和认真细致的工作作风。

二、企业实践锻炼内容

企业实训内容主要基于目前软件公司的热点需求——Java软件开发岗位进行设计和选取,包括相关知识内容的培训和山东高速集团采购系统项目的实训两部分内容,具体知识包括:Java知识(JDK的安装配置、Myeclipse开发工具使用、数据类型和运算符、流程控制、面向对象开发)、HTML知识、MYSQL知识和SSM知识(JSP应用、Sevlet应用、Spring-MVC应用、Spring依赖注入、Mybats框架应用及整合)。

三、企业实践锻炼收获与心得

1.课程设置应与岗位需求相匹配

高等职业院校人才培养模式定位于技术技能型人才的培养,为地方区域经济服务,为地方社会经济发展提供人才保障和智力支持,因此专业课程的设置应该以岗位工作任务和岗位能力需求为出发点。以Java软件开发岗位为例,目前学校开设的都是传统的数据库知识和web前端知识课程,但是IT技术发展迅速,真正的软件开发大多通过相关框架实践,如SSM框架、SSH框架等,因此,学校要适应目前社会的需求,与时俱进,及时更新课程标准和授课内容。

2.教师实践操作水平是培养高素质技术技能性人才的重要因素之一

目前企业对参加职业技能大赛获奖学生毕业生比较青睐,所以企业高职院校的评价主要通过高职院校技能大赛进行,而学生技能大赛成绩的结果反映了教师的实践操作水平。俗话说“老师要给学生一杯水,自己首先要有一桶水”,因此教师应首先提高个人实践操作水平,而提高教师实践操作水平的主要方式之一就是通过企业实践锻炼。据悉,山东省在不久的将来将启动高职院校教师职业技能大赛,因此教师要将提高实践操作水平作为自己以后工作的努力方向。

四、未来的努力方向

1.基于企业岗位需求进行教学改革

(1)教学模式和教学方法遵循职业发展规律。高职院校推行“工学结合、知行合一”的人才培养模式,因此要基于企业工作岗位和工作任务进行教学改革。

第一,推行教、学、做一体化教学模式。在教学中,应该以培养学生的职业能力为主,师生双方边教边学边做,理论和实践交替进行,直观和抽象交错出现,理中有实,实中有理,突出学生动手能力和专业技能的培養,充分调动和激发学生学习的兴趣,使学生真正变成学习的主人。要培养学生的终生学习和持续发展能力,推行教、学、做一体化教学模式对加强学生的动手操作能力和解决实际问题的能力有很大好处。

第二,推行翻转课堂教学方法。为提高学生的主动性和创新能力,在教学过程中,推行翻转课堂的教学方法,将学习任务布置给学生课下完成。学生利用信息化技术查阅需要的材料,还可以在网络上与别的同学讨论,完成老师分配的任务,并在课上分享任务完成过程和心得体会。由老师进行评论,师生间还可以进行充分的交流,这样可以满足学生的个性需要,有利于学生创新能力的培养。

(2)教学过程基于软件开发工作过程。将教学过程与企业软件开发过程相结合,教学过程围绕企业真实的软件开发项目展开,将要学习和掌握的知识技能,转化为一项项工作任务,学生分组按照行动导向的六个步骤(资讯-计划-决策-实施-检查-评估)进行,使学习任务既是一个完整的学习过程,又是一个工作过程,教师成为学生学习的引导者和促进者。

2.技能操作的提升与社会岗位前沿技术的了解

(1)技能操作的提升。以后,笔者将会继续积极参加企业实践锻炼,参加省级培训,完成每5年必须累计不少于6个月到企业或生产服务一线实践的目标,通过企业真实工作过程提高自己的实践操作水平和职业能力,并将其应用到教学过程、实验实训过程和学生技能大赛中。

(2)社会岗位前沿技术的了解。为推导社会技术的变化和教学知识的更新,在以后的工作中要经常深入企业,了解企业的生产组织方式、工艺流程、产业发展趋势等基本情况,熟悉企业岗位职责、操作规范、技能要求、用人标准、管理制度、企业文化等,学习所教专业在生产实践应用中的新知识、新技术、新工艺、新材料、新设备、新标准等,及时更新人才培养方案、课程标准,适应社会岗位对教学知识的需求。

五、小结

篇5:Java基础总结

2.在构造器中,如果为this添加了参数列表,那么就有了不同的含义。这将产生对符合此参数列表的某个构造器的明确调用。(1)尽管可以用this调用一个构造器,但却不能调用两个,而且必须将构造器调用置于最起始处。(2)除构造器外,编译器禁止在其他任何方法中调用构造器。

public class Person{ int age = 0; String name = “”; Person(int a){ age = a; System.out.println(“age:”+age); } Person(String n){ name = n; System.out.println(“name:”+name); } Person(int a,String n){ this(a); this.name = n; System.out.println(“both!”); }}

3.finalize方法

一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。

public class FinalizeDemo{ public static void main{ Cake c1 = new Cake(1); Cake c2 = new Cake(2); Cake c3 = new Cake(3); c2 = c3 = null; System.gc();//Invoke the Java garbage collector }}class Cake extends Object{ private int id; public Cake(int id){ this.id = id; System.out.println(“Cake Object ”+id+“ is created”); } protected void finalize()throws java.lang.Throwable{ super.finalize(); System.out.println(“Cake Object ”+id+“is disposed”); }}/**执行结果 :Cake Object 1 is createdCake Object 2 is createdCake Object 3 is createdCake Object 3 is disposedCake Object 2 is disposed*/

4.在定义类成员变量的地方可以为其赋值,在C++中是不能这么做的。在类的内部,变量定义的先后顺序决定了初始化的顺序。

篇6:Java基础总结

2.接口也可以包含域,但是这些域隐式是static和final的。

interface Runner//定义接口{ int i = 3; public void start; void run(); void stop();}interface Eater extends Runner//接口间可以继承{ public final static int j = 4; void openMouth(); void upAndDown(); void goIn();}class TT implements Eater//实现接口{ public void start(){System.out.println(“start”);} public void run(){System.out.println(“run”);} public void stop(){System.out.println(“stop”);} public void openMouth(){System.out.println(“openMouth”);} public void upAndDown(){System.out.println(“upAndDown”);} public void goIn(){System.out.println(“goIn”);}}public class TestInterface { public static void main(String[] args){ Runner tt = new TT(); System.out.println(tt.i); System.out.println(Runner.i); tt.start(); Eater ee = new TT(); System.out.println(ee.j); System.out.println(Eater.j); ee.start(); }}

篇7:Java基础总结

1.class对象

专门用来保存类的信息,所有类都是动态加载到JVM中的,在他们第一次使用的时候,类加载器会首先检查Class对象是否加载,如果没有,那么找到同名的class文件,然后加载字节码文件,验证代码的完整性和安全性,一旦这个类型的class对象加载到内存中,它将会用来创建所有此类的对象。

class对象的生成方式如下:

(1)Class.forName(“类名字符串”)

(2)类名.class

(3)实例对象.getClass()

package Refect;class Demo{ //other code...}class hello{ public static void main(String[] args){ Classdemo1 = null; Classdemo2 = null; Classdemo3 = null; try{demo1 = Class.forName(“Reflect.Demo”); }cathc(Exception e){e.printStackTrace(); } demo2 = new Demo().getClass(); demo3 = Demo.class; } System.out.println(“类名称 ”+demo1.getName());//Reflect.Demo System.out.println(“类名称 ”+demo2.getName());//Reflect.Demo System.out.println(“类名称 ”+demo3.getName());//Reflect.Demo}

2.instanceof

告诉我们对象是不是某个特定类型的实例。

3.反射

RTTI(运行时类型信息)和反射之间真正的区别只在于,对于RTTI来说,编译器在编译时打开和检查.class文件,而对于反射机制来说,.class文件在编译时是不可获取的,所以是在运行时打开和检查.class文件。

反射主要是指程序可以访问、检测和修改它本身或行为的一种能力。

package Reflect;interface China{ public String name = “Rollen”; public int age = 20; public void sayChina(); public void sayHello(String name,int age);}class Person implements China{ private String sex; public Person(){}; public Person(String sex){this.sex = sex;} public getSex(){return sex;} public setSex(String sex){this.sex = sex;} @Override public void sayChina(){ System.out.println(“hello, china”); } @Override public void sayHello(String name,int age){ System.out.println(name+“ ”+age); }}class hello{ public static void main(String[] args){ Classdemo = null; try{demo = Class.forName(“Reflect.Person”) }catch(Exception e){e.printStackTrace();} //保存所有的接口 Classintes[] demo.getInterfaces(); for(int i=0;icons[]= demo.getConstructors(); for(int i=0;i

篇8:Java基础总结

为了编译器可以准确的知道要生成什么样的类型,可以给直接常量后面添加后缀字符标志它的类型,若为L表示long,F表示float,D表示double。也可以利用前缀表示进制,0x表示十六进制,0表示八进制。

2.移位操作符

(<<):向左移动,低位补0

(>>):向右移动,高位补符号

(>>>):向右移动,高位补0

篇9:Java基础语法总结2

三、运算符

Java基 本 的 运 算 符 按功能分有 下 面 几 类 : 1.算 术 运 算 符(+,-,*,/,%,++,--)Java对 加 运 算 符 进 行 了 扩 展 ,使 它 能 够 进 行 字 符 串 的连 接,如 “abc”+“de”,得到 串 “abcde”。与 C、C++不 同 ,对 取 模 运 算 符 %来 说 ,其 操 作 数 可 以为浮点 数 , 如37.2%10=7.2。i++与 ++i的 区 别:i++在 使 用 i之 后 ,使 i的 值 加 1,因 此 执 行 完 i++后 ,整 个 表达式的 值 为 i,而 i的 值变 为 i+1;++i在 使 用 i之 前 ,使 i的 值 加 1,因 此 执 行 完 ++i后 ,整 个 表达式和 i的 值 均 为 i+1。

2.关 系 运 算 符(>,<,>=,<=,==,!=)该运算符的特点是:运算完的结果,要么是true,要么是false。Java中 ,任 何 数 据 类 型 的 数 据(包 括 基 本 类 型 和 组 合 类 型)都可 以 通 过 ==或!=来 比 较 是 否 相 等(这 与 C、C++不 同)。关 系 运 算 符 用 来 比 较 两 个 值 ,返 回 布 尔 类 型 的值true或 false,而不是C、C++中 的 1或 0。

3.布 尔 逻 辑 运 算 符(& | ^!&& ||)逻辑运算符除了!外都是用于连接两个boolean类型表达式。&: 只有两边都为true结果是true。否则就是false。|:只要两边都为false结果是false,否则就是true ^:异或:和或有点不一样。两边结果一样,就为false。两边结果不一样,就为true.& 和 &&区别: & :无论左边结果是什么,右边都参与运算。&&:短路与,如果左边为false,那么右边不参数与运算。| 和|| 区别:|:两边都运算。

||:短路或,如果左边为true,那么右边不参与运算。

4.位 运 算 符(>>,<<,>>>,&,|,^,~)用于操作二进制位的运算符,如2*8 = 2<<3。>>>(无符号右移)5.赋 值 运 算 符(= +=-= *= /= %=)6.条 件 运 算 符(?:)7.其 它(包 括 分 量 运 算 符 · ,下 标 运 算 符 [],实 例 运 算 符 instanc eof,内 存 分 配运 算 符 new,强 制 类 型 转 换 运 算 符(类 型), 方 法调 用 运 算 符()等)例子:对两个变量的数据进行互换。不需要第三方变量。int a = 3,b = 5;-->b = 3,a = 5;a = a + b;a = 8;b = ab;a = 5;a = a ^ b;//

b = a ^ b;//b = a ^ b ^ b = a a = a ^ b;//a = a ^ b ^ a = b;

Java 中共有 54 种运算符,按优先级可以分为 14 级:

优先级 操作符 含义 关联性 用法

--1 [ ] 数组下标 左 array_name[expr].成员选择 左 object.member

()方法参数 左 method_name(expr_list)()实例构造 左 class_name(expr_list)++ 后缀自增 左 lvalue++--后缀自减 左 lvalue--2 ++ 前缀自增 右 ++rvalue--前缀自减 右--lvalue ~ 按位取反 右 ~expr!逻辑非 右!expr + 一元加 右 +expr 减 左 expr-expr

+ 字符串连接 左 strExpr + strExpr 6 >> 有符号右移 左 expr >> distance >>> 无符号右移 左 expr >>> distance 7 < 小于 左 expr < expr <= 小于等于 左 expr <= expr > 大于 左 expr > expr >= 大于等于 左 expr >= expr

instanceof 类型比较 左 ref instanceof refType == 等于 左 expr == expr!= 不等于 左 expr!= expr & 整数按位与 左 integralExpr & integralExpr & 布尔与 左 booleanExpr & booleanExpr 9 ^ 整数按位异或 左 integralExpr ^ integralExpr ^ 布尔异或 左 booleanExpr ^ booleanExpr 10 | 整数按位或 左 integralExpr | integralExpr | 布尔或 左 booleanExpr | booleanExpr 11 && 逻辑与 左 booleanExpr && booleanExpr 12 || 逻辑或 左 booleanExpr || booleanExpr 13 ? : 条件运算 右 booleanExpr ? expr : expr 14 = 赋值 右 lvalue = expr *= 乘赋值 右 lvalue *= expr /= 除赋值 右 lvalue /= expr %= 模赋值 右 lvalue %= expr += 加赋值 右 lvalue += expr += 字符串连接赋值 右 lvalue += expr-= 减赋值 右 lvalue-= expr <<= 左移赋值 右 lvalue <<= expr >>= 有符号右移赋值 右 lvalue >>= expr >>>= 无符号右移赋值 右 lvalue >>>= expr &= 整数按位与赋值 右 lvalue &= expr &= 布尔与赋值 右 lvalue &= expr |= 整数按位或赋值 右 lvalue |= expr |= 布尔或赋值 右 lvalue |= expr ^= 整数按位异或赋值 右 lvalue ^= expr ^= 布尔异或赋值 右 lvalue ^= expr

运算符不但有优先级,还有关联性。上表中关联性为“左”表示该表达式从左边开始进行运算;关联性为“右”表示该表达式从右边开始进行运算。

四、流程控制语句(If、switch、do while、while、for、break、continue)1.当判断数据范围,获取判断运算结果boolean类型时,需要使用if;当判断固定个数的值的时候,可以使用if,也可以使用switch。但是建议使用switch,效率相对较高。switch(变量){ case 值:要执行的语句;break;…

default:要执行的语句;} 工作原理:用小括号中的变量的值依次和case后面的值进行对比,和哪个case后面的值相同了就执行哪个case后面的语句,如果没有相同的则执行default后面的语句; 细节:1):break是可以省略的,如果省略了就一直执行到遇到break 为止; 2):switch 后面的小括号中的变量应该是byte,char,short,int四种类型中的一种; 3):default可以写在switch结构中的任意位置;如果将default语句放在了第一行,则不管expression与case中的value是否匹配,程序会从default开始执行直到第一个break出现。

2.当某些语句需要执行很多次时,就用循环结构。

while和for可以进行互换。区别在于:如果需要定义变量控制循环次数。建议使用for。因为for循环完毕,变量在内存中释放。

篇10:Java基础知识点总结

*使用class关键字定义类,注意类名大写

*成员属性:成员属性不赋值会有默认值(默认值规则参考PPT)

*成员方法

*构造方法:没有任何返回值,名字与类名一样,构造方法的本意是用来初始化对象(初始化对象的属性值)

4.2 实例化对象:Student s = new Student;

*使用new + 构造方法实例化对象

*new 在堆中开辟了对象的空间,并且给属性赋上默认值

*接下来调用构造方法,执行构造方法中的代码

*最后返回对象的引用

4.3区分引用类型与基本数据类型

*引用类型的变量在内存中有两块区域,一块是引用本身,另一块是引用所指向的对象

*基本数据类型在内存中只有一块空间:里面存着值

4.4如何操作对象:使用.操作符

*使用对象名.属性操作对象的属性(如:stu.age = 18;)

*使用对象名.方法调用对象的方法(如:stu.study());

*this:每个对象都有this,this是指向本身的引用,代表本身

4.5. 必须能够独立写出Point3D的代码(题目在PPT上)

5. 访问控制,方法定义与调用,重载,方法重写5.1 访问控制5.1.1 package包的使用

*使用package 定义包:package只能放在代码的第一行

*import:导包,可以到入包下所有import java.io.*;可以导入具体的一个类import java.io.Reader;

*包的作用:1,分类;2,隐藏(封装的作用),3,便于管理

*java本身提供了一些包:java.lang(核心类,此包如需要引入),java.util(集合框架以及其他常用类),java.io(输入输出),java.awt,javax.swing(图形)

5.1.2 继承(简单概念):使用extends关键字表示继承

*子类继承父类的所有属性

*子类继承父类除private(非同包的时候也除默认的方法)外的所有方法

*子类对象拥有super引用,表示父类的引用,可以使用super明确的调用父类的方法或属性

5.1.3四个访问级别,从大到小:public ,protected,默认,private

*注意访问级别是针对类来讲的,不是针对对象!!!!!!!

*注意类的访问修饰符只能使用public 或默认

*学了访问控制后:类的属性都写private,通过set/get方法对属性进行赋值,取值

5.2 重载与重写

1.判断是否是重载,或者是否是重写,如果不是重写或者重载,就不受重写重载规则的约束

5.2.1重载:一个类当中,有方法名相同,参数不同的方法,称为重载

*不能只改返回值:不能根据方法的返回进行重载

5.2.2重写:在继承当中,子类将父类的方法重新写了一遍:重写的方法与被重写的方法拥有相同的方法签名(返回值类型,方法名,参数列数)

*.重写的方法能够改变被重写的方法的访问级别,注意只能是相等或者扩大

*.重写的方法不能抛出比被重写方法更多的异常,注意只能缩小异常的范围

*.如果被重写的方法是具体的,重写之后不能改为abstract

5.3 类与对象的生命周期

5.3.1类与对象的初始化过程:

*静态属性先初始化,而且仅仅初始化一次

*首先给静态属性进行声明,并赋默认值,然后代码从上往下执行静态代码块或静态赋值

*每创建一个对象,就先实例化成员属性:首先给成员属性声明,赋默认值,然后.执行赋值语句

*成员属性初始化后再调用构造方法

5.3.2垃圾回收机制

*java虚拟使用垃圾回收机制进行垃圾回收

*垃圾回收本身是一个线程(当内存不够用的时候,一般会进行垃圾回收)

*垃圾回收不能通过程序来调用,仅仅能够通过System.gc()建议虚拟机进行垃圾回收

*当进行垃圾回收时,会调用对象的finalize方法

5.4 单例模式:一个类仅仅能有一个实例(设计模式的一种)

*构造方法必须为私有的

*提供静态的方法来获得对象

*提供静态的属性,该属性是该类的一个对象

6. 继承,抽象类,接口

6.1 继承:

6.1.1 继承的语法:使用extends关键字表示继承

*子类继承父类所有的属性

*私有方法不能被继承

*super关键字表示父类的引用,可以用super来调用父类的方法或属性

6.2.2 继承中的构造方法:了解下面的知识点以及实例化对象时代码的执行过程

*子类的构造过程必须调用其基类的构造方法

*子类可以在自己的构造过程中使用super (arg_list)来调用基类的构造方法

*如果调用super,必须写在子类构造方法的第一行

*可以使用this(argument_list)调用本类的另外的构造方法

*如果子类的构造方法中没有显示的调用基类的构造方法,系统默认调用基类无参数的构造方法

*如果子类构造方法中既没有显式的调用基类构造方法,基类中又没有无参数的构造方法,编译出错

6.3.3 对象的转型

*一个基类的引用类型变量可以指向其子类的对象

*一个基类的引用不可以访问其子类对象新增的成员

*可以使用instanceof 关键字来判断一个引用类型变量所指向的对象是否是制定的类型

*子类的对象可以当作基类的对象来使用称作向上转型,反之称为向下转型

*子类可以当成父类来使用,无需显示转换

*父类引用转换为子类引用要进行强制转换

*注意:不兼容的类型之间不能进行相互转换(只有具有直接或间接父子关系的类才是兼容的类型),否则编译时会报错

*注意:兼容类型之间的转换要看对象的实际类型,因此向下转化时最好先用instanceof来判断是否是某个类型,在转换,以免报报错

6.4.4 多态:也称运行时绑定:一般是指父类的引用指向子类对象,通过父类的引用调用被子类重写的方法,这个时候执行的是子类的方法

*一句话总结多态:对象实际是什么类型就调用什么类型的方法

*多态成立的条件:1,要有继承。2,要有重写。3,必须有父类引用指向子类对象。

6.2 抽象类:用abstract修饰的类称为抽象类(抽象的本意是不具体)

1.抽象方法不能有方法体

2.抽象类不能被实例化。

3.含有抽象方法的类必须被声明为抽象类,

4.子类继承抽象类,必须被重写父类的抽象方法,否则本身也必须被声明为抽象类

5.抽象类中的方法和属性没有其他规则来约束,抽象类中没有抽象的方法是可以的,抽象类中可以有非抽象的方法和属性

6.3 static :静态关键字

6.3.1static属性:在类中,用static申明的成员变量叫静态变量,他为该类的公用变量,在第一使用时被初始化,对于该类的所有对象来说,static成员变量只有一份

6.3.2 static方法:用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以static方法中不可以访问非static的成员。

*静态方法中不能访问非静态成员

*静态成员方法没有this引用

*可以通过类名(不需要实例化)或对象引用来访问静态成员

6.4 final关键字:

final表示最终的意思

*final的变量的值不能够被改变

*final的成员变量

*final的局部变量(形参)

*final的方法不能够被重写

*final的类不能够被继承

6.5 接口:interface

1. 使用interface定义一个接口,使用implements实现一个接口

2. 接口中的属性只能为public static final类型(静态常量)

3. 接口中的方法只能为public abstract类型

4. 一个类可以实现多个接口,但只能继承一个类

5. 接口也可以继承接口

7. 异常处理

java的异常处理机制

异常的关键字Exception

try,catch,finally,throw,throws关键字

7.1什么是异常,为什么要引入异常

*java程序运行时出错,java就抛出异常,程序立即终止(也可以说程序崩溃)

*java将错误信息封装在异常对象里抛出

*学会查看异常的信息:异常的名字,异常的信息,程序抛异常的位置

*java引入异常处理机制,是防止程序出错崩溃

7.2java的异常的分类

*java的抛出的错误用异常类来表示,java拥有一个异常体系(有许多异常类,并且相互之间具有关系)

*java里面的所有异常都是Throwable的子类

*java虚拟机的异常是Error的子类,一般不需进行处理(因为没法进行处理)

*除Error之外还有Exception,Exception分为两类:RuntimeException(运行时异常),被检查异常(除了RuntimeException都是被检查异常)

*RuntimeException(运行时异常,可以不捕获或声明抛出,编译不会报错,一般是控制不当造成的),可检查异常(必须捕获或声明抛出,这类异常通常需要检测并处理,一般使用资源时造成的)

*几个常见的异常:NullPointerException(空指针),IndexOutOfBoundsException(索引越界),SQLException(数据库异常),IOException(文件异常)

7.3异常的处理方式

*使用try,catch,finally进行处理

*不处理,使用throws,throw交给别人来处理

7.4try,catch,finally中程序的运行过程

*尝试执行try里面的语句

*一次运行当中最多执行一个catch块,如果没有抛出异常,catch块不执行

*finally总会执行,不管有没有抛出异常

*如果try块里面有return语句,finally也会执行

7.5区分RuntimeException与被检查异常

*RuntimeException不需要捕获或声明抛出(但是如果你捕获或声明抛出也不会有错)

上一篇:清收账款委托协议书下一篇:九年级物理电功率教学设计