`
yidongkaifa
  • 浏览: 4038342 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多
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每一个元素
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics