您的位置:首页 > 编程语言 > C语言/C++

C++转向java之基础差异盘点

2012-08-13 23:58 489 查看
1.public static void main(String[] args){}

main method 正常退出 return 0

返回其他值 : System.exit

2.java 中,/**/注释不能嵌套

3.整型字节数固定,不随平台cpu位数改变而改变

int:4 short:2 long:8 byte:1

java没有unsigned类型

4.char类型用UTF-16编码描述一个代码单元

尽量不要再程序中使用char类型,除非确实需要对UTF-16代码单元进行操作

最好将需要处理的字符串用抽象数据类型表示

5.java中false和true不能与整型进行转换

6.C和C++ 声明:int i = 10;

定义:extern int i;

java 不区分变量的的声明和定义

7.java声明一个常量:final doule CM_PER_INCH=2.54;

只能被赋值一次,之后不能改变

public static final double CM_PER_INCH = 2.54;

const 是java保留的关键字,但目前并没有使用,java必须使用final定义常量

8.整数被0除抛出一个异常,浮点数被0除将会得到无穷大或NaN

15/2 = 7 15%2 = 1
15.0/2 = 7.5

9.java中没有幂运算,需借助Math类的pow方法

double Math.pow(x,a);

10.强制类型转换超出目标类型的表示范围,采取截断的办法

不能再Boolean类型与任何数值类型之间进行转换

可采取 b?1:0

11.同样有枚举类型 enum SizeP{SMALL, MEDIUN,LARGE}'

12.java字符串就是Unicode字符序列

String greeting = "hello";

int n = greeting.length(); // 5

char first = greeting.charAt(0);// 'H'

//得到第i个代码点

int index = greeting.offsetByCodePoint(0, i);

int cp = greeting.codePointAt(index);

//遍历一个字符串

int cp = sentence.codePointAt(i);

if(Character.isSupplementaryCodePoint(cp))

i += 2;

else

i++;

//提取字串

String greeting = "hell0";

String s = greeting.Substring(0,3); // s = "hel"

//字符串编辑,java中不能直接修改某个字符,而C++可以

greeting = greeting.substring(0, 3) + ("p!");

//采用先截取再拼接的方法完成字符的修改

//拼接效率不高,但不可变字符串有一个优点,编辑器将字符串共享

//StringBuilder效率比String高

13.java可以使用 + 连接连个字符串,当与非字符串的值拼接时吗,后者被转换成字符串

int age = 13;

String rating = "PG" + age;// "PG13"

14.检测字符串是否相等

s.equals(t); //s和t可以是字符串常量也可以是变量

"Hello".equals(greeting);

"Hello".equalsIgnoreCase("hello");//不区分大小写

不要使用 == 号检测两个字符串是否相等,只是判断两个字符串是否放在同一位置

虚拟机只将字符串常量共享,+或者substring等操作的结果不共享

C++的string类重载了==运算符,而java没有采用这种方式

15.java.lang.string

//返回指定位置代码单元

char charAt(int index)

//返回给定位置开始或结束的代码点

int codePointAt(int index)

//返回从startIndex代码点开始,位移cpCount后的代码点索引

int offsetByCodePoints(int startIndex, int cpCount)

//按字典顺序,如果字符串在other之前,返回一个负数

//在other之后返回一个正数,相等为0

int compareTo(String other)

//字符串以suffix结尾,返回true

boolean endsWith(String suffix)

//返回与字符串str或代码点cp匹配的第一个字符串的开始位置

//该位置冲索引0或fromindex开始计算,没有str,返回-1

int indexOf(string str)

int indexOf(string str, int formindex)

int indexOf(int cp)

int indexOf(int cp, int fromIndex)

//返回与字符串str或代码点cp匹配的最后一个字符串的开始位置

//该位置冲串尾端或fromindex开始计算,没有str,返回-1

indexOf换成lastindexOf

//将字符串用newstring代替oldstring 使用string或buildstring作为charsequence参数

string replace(charsequence oldstring, charsequence newstring)

//字符串以prefix开始返回true

boolean startsWith(String prefix)

//大小写转换

toLowerCase()
toUpperCase()

//返回一个新字符串,该串删除原始字符串头部和尾部的空格

16.读取输入

Scanner in = new Scanner(System.in)// Scanner 附属于标准输入流

String str = in.nextLine();// 输入一行

in.next();// 读取一个单词,空白作为分隔符

int age = in.nextInt();// 读取一个整数

Scanner(Inputstream in); //用指定的输入流创建一个Scanner对象

17.static void exit(int status)//终止虚拟机并将状态吗传给操纵系统,非0表示出错

18.格式化输出

System.out.print()

System.out.printf()
//用法如同C中printf

格式化字符串

String meg = String.format("hello,%s.Next year, you'll be %d", name, age);

打印当前日期:system.out.printf("%tc", new Data());

20.java控制流程结构没有goto语句,只是保留字,但break可以带标签达到goto的效果,

另外加入了foreach,其他与C,C++一样,

21.C++可以在嵌套块中重定义一个标量,内层变量覆盖外层标量,java不允许

22.与C++不同,java没有提供运算符重载

23.for each循环语句的循环变量将会遍历数组中的每个元素,而不需要使用下标值

for(int element:a)

system.out.println(element);//打印数组a每一个元素
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: