Java中有许多和C习惯不一样的地方:

1. 局部变量使用前的初始化。
这一点不同于C/C++,java会出现Error,而后者只会有warning,即java中局部变量使用前必须做显示的初始化。
static 变量会被自动初始化为类型默认值。
2. boolean类型。
在必须用到判断式的场合,如while条件、if条件、for条件中,必须是一个boolean表达式,boolean类型是不可由int类型转换过来的,所以很多C中常用的如while(1)在java中是不对的,SCJP也常考这样的题。
3. switch表达式。
        switch表达式必须是与int值相容的表达式,如byte short char可自动提升,其他的均不可。
        Switch判断中,若case里没有break;default将执行。
int i=1;
switch(i){
case 0:System.out.println("0");
case 2:System.out.println("2");
default:System.out.println("defalut");
case 3:System.out.println("3");
}
这段代码的运行结果是:default 3说明default后的语句会被无条件执行.
4. 类型的提升
       从小到大的提升自动,从大到小的要手动切割,做运算式,最小的单位是int。
5. 逻辑运算符
       java中的逻辑运算符有短路运算符之分,~取反 !非 &与 |或 ^抑或这几个中与C中不同的是C中前几个进行的是单目为操作。java中与、或是双目的,他们是非短路的,而短路操作有:&&与 ||或
6. 参数传递
        java中没有指针的概念,也就没有C++中引用的概念,那么java中就不会有显示的地址传递。当我们在用函数调用的方法想改变参数的值的时候,就需要清楚java中什么是能改变的,什么是不能改变的:对于内置类型作参数的函数调用,函数中是不能改变它的值的,改变的只有形参。对于引用类型(类类型)作参数的函数调用,函数中能改变的东西有限: 可以改变引用指向的内容,而不能改变引用的指向。
7. 数组。
数组的声明方式有以下4种:
1) String names[];
  names = new String[3];
             names[0]={“abc”};names[1]={“def”};names[2]={“ghi”};
2) String names[] = {“abc”,”def”,”ghi”};
3) mydate date[];
  date = new mydate[3];
date[0] = new mydate(22,7,1964);date[1]=….
4)mydate date[] = {
New mydate(…);
New mydate(…);
}
Java的数组貌似是变长动态的,但实际上数组的大小不是可变的,而是新分配内存,在把当前内容搬家,以达到动态效果。
二维数组的声明时须注意:将数组的第一维注明。
二维数组可以实现不等长情况,即它可以不是一个矩阵。
 
Java的一些细节:
1.       类型长度:
char 0~65535;(unicode编码,不同于C语言的ASCII编码)
Byte -128~127;
Short -2(15)~2(15)-1;
Int -2(31)~2(31)-1;
Long -2(63)-2(63)-1
2.       float类型声明时需要注意的一点:
java中默认的浮点型是double类型,在声明初始化时会发生一些类型检查,所以需要特别注意在浮点型后加上类型说明后缀:f/F。
这是类型检查的特点,相似的还有byte类型的运算情况:byte b;b = 3;b= b*3;这时会出错,由于运算最小单位是int类型,所以结果是int类型,在int类型赋值给byte就要有类型精度损失。所以要将类型转换成byte。b = (byte)(b*3);
3.       i=0 ;(i++ == 1) 这个布尔表达式的值是什么?false! 想来只能说把包含i++执行完后i才等于1。
4.       java的移位操作符
                一共有三种,分别是”>>”,”>>>”,”<<”,执行的操作分别是有符号右移,无符号右移,左移,有符号右移的意思是说移入的最高位和原最高符号位相同,无符号右移是移入位始终补零,左移时最低位始终补零,最高位被舍弃。移位操作符另一个非常值得注意的特点是其右操作数是取模运算的,意思是说对于一个int型数据而言,对它移位32位的结果是保持不变而非变成零,即:a>>32的结果是a而不是0,同理,对long型数是对右操作数取64的模,a>>64==a;还有一点需要注意的是移位操作符”>>>”只对int型和long型有效,对byte或者short的操作将导致自动类型转换,而且是带符号的。
5.       boolean bool = true;
if(bool = false){}
这句可以运行,而且bool的值会变成false,此if中的表达式值也会是false的结果,不会执行{}里的语句。
6.       类的构造函数中,用到其它的构造函数时,要把this(…)写在当前构造函数的第一行。
7.       类继承体系中,super()调用父类构造函数时,要在构造函数的第一行,super和this不能同时出现在构造函数中(调用其它构造函数),当不写super时,系统会自动增加无参数的构造器,但是若父类没有无参构造器,系统会报错。
8.       类的空参数构造器可以是1)default构造器2)显示写出的空参数构造器。但不能在参数中写void。默认构造器与类的访问权限相同。
9.       构造器执行的步骤:
1)创造对象引用,分配内存
2)为实力变量作类型默认值0或null
3)为实力变量调用类定义时的值做赋值操作(类体中的“初始化”)
4)调用构造器内操作
5)建立内存与引用间的关联
10.   方法重写与多态性紧密相连。
方法重写的要求:方法名相同,返回类型相同,参数相同,访问性不低于原方法(重写时要注意default访问权限问题——不写访问权限是default),抛出的一场不能更多
注意区分方法重写和方法重载。(重载要求参数不同,返回值可以不同,但是不能是重载时唯一的不同点)
特别注意有一点与C++中的多态不同,C++中的多态中当返回类型是类本身时,可以在父类方法返回父类的类型,子类方法返回子类的类型。但是java不行,必须是父类的方法,这时子类型方法中会发生切割,而切割后虽然不能保留字类型的自有信息,但是会保留子类的类型信息,这样可以保证运行时识别出多态方法使调用正确。
11.   继承时private被继承,但不可见。而不是不继承。
12.   重写 equals时,应同时重写hashcode。
如果没有重写新类的equals(),则该方法和 == 操作符一样在两个变量指向同一对象时返回真,但是java推荐的是使用equals()方法来判断两个对象的内容是否一样,就像String类的equals()方法所做的那样:判定两个String对象的内容是否相同,而==操作符返回true的唯一条件是两个变量指向同一对象。
13.   java中全局变量是以“单件模式”实现的。

14.   String类型。
       String s = new String(“new”);创建了两个对象:一个是“new”常量字符串,一个是String类型的s对象。string对象分为字面量和构造量.字面量放在缓冲池中,是常量,不会改变,如果两个字面量相同,那么也不会再生成.所以用==返回的是true.构造量有构造函数生成,与想象中相同.对于字面量来说,多个类共享的是同一个缓冲池。这意味着即使在另外一个类中创建一个先前类中已有的字面量字符串,则仍旧是同一对象。

String类最重要的一点在于“不变性(immutable)”。它的意思是一旦String类产生了就不会再改变了,若试图改变它都会产生新的对象。这也正是调用String类型中许多函数,与想象的结果不同,不是改变了原值,而是新生成一个对象返回。如: concat(string str)   substring(int beginIdex)        replace(char oldchar,char newchar);等,但+=改变string量,是改变后重新赋值的过程.

对于StringBuffer而言是可变的,对它的任何改变都是实时的。

15.   借口定义的是一种能力。借口定义的方法均无实现,而且这种函数一般是public default,借口定义数据类型的时候默认是public static final。
java是通过借口实现多继承的。
16.   final修饰引用类型时,表示其关联不可改变,而内容可变。
final修饰实例变量时,要求构造器显示初始化。
final修饰方法时,表示此函数不能重写。
final修饰类时,表示此类型不能继承。(vector、string等类型都是final)
17.   Math的函数都是静态的(可以通过私有其构造器,static其方法,来形成无实例类)。
math.sqrt(-1)返回nan。 
ceil()方法。该方法返回类型为double,往单一的正坐标方向取最近的整数
floor()方法。该方法返回类型类double,取最靠近其负向的整数。
round()方法。它有两个重载版本:double和float,返回分别为long和int long round(double a); int round(float)
round() 方法=Math.floor(a+0.5),这意味着正数5入,负数6入

SCJP认证复习~1相关推荐

  1. SCJP认证复习——经典题库

    我把 147 和 104 的题综合了一下,从个人的观点做了一些解析.也把其中的一些错误纠正了一些,多数题都通过了上机实测.但个人能力有限,对答案的正确性仍然不敢保证全都正确,所以请各位自行处理.   ...

  2. 顺利通过scjp认证考试

    Java以其平台无关性.面向对象.支持多线程等优点成为越来越多的程序开发人员的新宠,Java技术以其独特的优势在越来越多的领域得以使用和发展.作为程序开发人员,为了检验对Java掌握的程度,参加Sun ...

  3. 关于Sun公司的SCJP认证

    SCJP sun certificated java programmer (SCJP) 一种Java认证考试 对于Java程序设计员,Sun推出两项认证:Sun Certificated Java ...

  4. (转)SCJP 认证考试指南

    SCJP 认证考试指南SCJP – Sun Certified Java Programmer (Sun Java 程序员认证)第1 章 声明和访问控制目标一 创建数组数组Java 中的数组跟C/C+ ...

  5. 《游戏专业概论》认证复习题目

    <游戏专业概论>认证复习题目 2010年06月15日 单选题 总分:0 1.游戏画面的主风格一般由谁来把握____. A. 主程序 B. 主策划 C. 主美术 D. 项目主管 2.下列各项 ...

  6. 红帽子认证复习课程-视频分享

    http://www.400gb.com/u/2718690/4533030 主要内容:红帽子认证复习课程,全面重点的讲解了认证考试的相关知识点,并配有上机演示. 备注:可忽略弹出的广告窗口将其关闭, ...

  7. C1认证复习材料(参照考纲,任务)

    目录 计算机通识 进制转化 位运算 储存单位换算 宽带换算 数据校验 奇偶校验 CRC循环冗余(不一定考) 字符编码 ASCII码 多媒体格式 码率计算公式 TCP/IP协议簇 子网划分 等长子网划分 ...

  8. 怎样拿下SUN公司的SCJP认证?

    SCJP本来易拿下,可我第一次却恰恰为59%,郁闷啊!1250RMB的银子啊!你们可不要蹈偶的覆辙啊!想过SCJP的哥们,可以进去看看我的体会....... SUN的SCJP资格证书,想说拿你却并不难 ...

  9. java考试真题6_JAVA认证考试历年真题:SCJP认证试题解析6

    17. Which is the return type of the method main()? A. int B. void C. boolean D. static 翻译 main()方法的返 ...

最新文章

  1. 不用栈的直接二叉树遍历-morris travalsal
  2. win10系统 ubuntu子系统 进行ndk编译笔记
  3. Codeforces 1159A A pile of stones
  4. 【Python-pywt】 小波变化库—Pywavelets 学习笔记
  5. Kate and imperfection CodeForces - 1333F(思维+数学)
  6. 项目学生:JPA标准查询
  7. 一个经典实例理解继承与多态原理与优点(附源码)---面向对象继承和多态性理解得不够深刻的同学请进...
  8. ARM指令 LDR 和 ADR的一些区别
  9. ps导出gif颜色不对_PS基础知识(1)
  10. web系统软件测试功能点,小程序、app、web测试的区别
  11. WordPress多用途电子商务博客新闻主题betheme 21.5.6版本
  12. 用GNS3制作路由交换网络拓扑图
  13. 让你两分钟明白什么是ERP
  14. Unity3D学习记录 (跑酷小游戏完结)
  15. kettle源码分析之1启动流程(IDEA启动carte调试)
  16. PHPExcel的使用
  17. 源代码可以申请版权登记吗
  18. CSS空格和换行的处理
  19. 零时科技 || TempleDAO攻击事件分析
  20. 『每周译Go』开启并发模式

热门文章

  1. 阿里笔试 8-28 字符串交换
  2. 二进制序列化器、XML序列化器、Json序列化器
  3. 2014年中秋节,北京哪里有相亲会?
  4. 谈谈互联网企业的人员分工和角色管理
  5. 简单的启发式搜索---算法爬山算法
  6. 安装程序无法继续因为你的计算机,需要重新启动计算机,安装程序才能继续 | Microsoft Docs...
  7. 实战-Fluxion与wifi热点伪造、钓鱼、中间人攻击、wifi破解
  8. 特征与角点的基础知识(1)
  9. 基础TypeScript(一)
  10. C# 串口关闭时主界面卡死原因分析