javaconst(javaconstants)
本篇文章给大家谈谈javaconst,以及javaconstants对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Java的const怎么用
- 2、JAVA语言中有C++中的 const 语句么?
- 3、java判断题1.在Java的方法中定义一个常量要用const关键字。
- 4、java里面的const-string什么意思
- 5、java const
- 6、java保留字是什么?
Java的const怎么用
const是constant的缩写,“恒定不变”的意思。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性和高效性。
1 用const修饰函数的参数
如果参数作输出用,不论它是什么数据类型,也不论它采用“指针传伏裤递”还是“引用传递”,都不能加const修饰,否则该参数将失去输出功能。
const只能修饰输入参数:
u 如果输入参数采用“指针传递”,那么加const修饰可以防止意外地改动该指针,起到保护作用。
例如StringCopy函数:
void StringCopy(char *strDestination, const char *strSource);
其中strSource是输入参数,strDestination是输出参数。给strSource加上const修饰后,如果拿厅银函数体内的语句试图改动strSource的内容,编译器将指出错误。
u 如果输入参数采用“值传递”,由于函数将自动产生临时变量用于复制该参数,该输入参数本来就无需保护,所以不要加const修饰。
例如不要将函数void Func1(int x)写成void Func1(const int x)。同理不要将函数void Func2(A a) 写成void Func2(const A a)。其中A为用户自定义的数据类型。
u 对于非内部数据类型的参数而言,象void Func(A a) 这样声明的函数注定效率比较底。因为函数体内将产生A类型的临时对象用于复制参数a,而临时对象的构造、复制、析构过程都将消耗时间。
为了提高效率,可以将函数声明改为void Func(A a),因为“引用传递”仅借用一下参数的别名而已,不需要产生临时对象。但是函数void Func(A a) 存在一个缺点:“引用传递”有可能改变参数a,这是我们不期望的。解决这个问题很容易,加const修饰即可,因此函数最终成为void Func(const A a)。
以此类推,是否应将void Func(int x) 改写为void Func(const int x),以便提高效率?完全没有必要,因为内部数据类型的参数不存在构造、析构的过程,而复制也非常快,“值传递”和“引用传递”的效率几乎相当。
对于非内部数据类型的输入参数,应该将“值传递”的方式改为“const引用传递”,目的是提高效率。例如将void Func(A a) 改为void Func(const A a)。
对于内部数据类型的输入参数,不要将“值传递”的方式改为“const引用传递”。否则既达不到提高效率的目的,又降低了函数的可理解性。例如void Func(int x) 不应该改为void Func(const int x)。
2 用const修饰函数的返回值
u 如果给以“指针传递”方式的函数返回值加const修饰,那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加const修饰的同类型指针。
例如函数
const char* GetString(void);
如下语句将出现编译错误:
char *str = GetString();
正确的用法是
const char *str = GetString();
u 如果函数返回值采用“值传递方式”,由于函数会把返回值复制到外部临时的存储单元中,加const修饰没有任何价值。
例如不要把函数int GetInt(void) 写成const int GetInt(void)。
同理不要消宴把函数A GetA(void) 写成const A GetA(void),其中A为用户自定义的数据类型。
如果返回值不是内部数据类型,将函数A GetA(void) 改写为const A GetA(void)的确能提高效率。但此时千万千万要小心,一定要搞清楚函数究竟是想返回一个对象的“拷贝”还是仅返回“别名”就可以了,否则程序会出错。例如:
[cpp] view plaincopyprint?
class String
{
//…
// 赋值函数
String operate=(const String other);
// 相加函数,如果没有friend修饰则只许有一个右侧参数
friend String operate+(const String s1, const String s2);
private:
char *m_data;
}
class String
{
//…
// 赋值函数
String operate=(const String other);
// 相加函数,如果没有friend修饰则只许有一个右侧参数
friend String operate+(const String s1, const String s2);
private:
char *m_data;
}
String的赋值函数operate = 的实现如下:
[cpp] view plaincopyprint?
String String::operate=(const String other)
{
if (this == other)
return *this;
delete m_data;
m_data = new char[strlen(other.data)+1];
strcpy(m_data, other.data);
return *this; // 返回的是*this的引用,无需拷贝过程
}
String String::operate=(const String other)
{
if (this == other)
return *this;
delete m_data;
m_data = new char[strlen(other.data)+1];
strcpy(m_data, other.data);
return *this; // 返回的是*this的引用,无需拷贝过程
}
对于赋值函数,应当用“引用传递”的方式返回String对象。如果用“值传递”的方式,虽然功能仍然正确,但由于return语句要把 *this拷贝到保存返回值的外部存储单元之中,增加了不必要的开销,降低了赋值函数的效率。例如:
String a,b,c;
…
a = b; // 如果用“值传递”,将产生一次 *this 拷贝
a = b = c; // 如果用“值传递”,将产生两次 *this 拷贝
String的相加函数operate + 的实现如下:
[cpp] view plaincopyprint?
String String::operate+(const String s1, const String s2)
{
String temp;
delete temp.data; // temp.data是仅含‘\0’的字符串
temp.data = new char[strlen(s1.data) + strlen(s2.data) + 1];
strcpy(temp.data, s1.data);
strcat(temp.data, s2.data);
return temp;
}
String String::operate+(const String s1, const String s2)
{
String temp;
delete temp.data; // temp.data是仅含‘\0’的字符串
temp.data = new char[strlen(s1.data) + strlen(s2.data) + 1];
strcpy(temp.data, s1.data);
strcat(temp.data, s2.data);
return temp;
}
对于相加函数,应当用“值传递”的方式返回String对象。如果改用“引用传递”,那么函数返回值是一个指向局部对象temp的“引用”。由于temp在函数结束时被自动销毁,将导致返回的“引用”无效。例如:
c = a + b;
此时 a + b 并不返回期望值,c什么也得不到,留下了隐患。
u 函数返回值采用“引用传递”的场合并不多,这种方式一般只出现在类的赋值函数中,目的是为了实现链式表达。
例如
[cpp] view plaincopyprint?
class A
{//…
A operate = (const A other); // 赋值函数
};
class A
{//…
A operate = (const A other); // 赋值函数
};
A a, b, c; // a, b, c 为A的对象
…
a = b = c; // 正常的链式赋值
(a = b) = c; // 不正常的链式赋值,但合法
如果将赋值函数的返回值加const修饰,那么该返回值的内容不允许被改动。上例中,语句 a = b = c仍然正确,但是语句 (a = b) = c 则是非法的。
3 用const修饰成员函数
const成员函数是指在类的成员函数后面加 const的函数,如int GetNum() const; const修饰成员函数的作用是:只能读取数据成员,不能改变数据成员。const成员函数只能调用const函数,不能调用其它非const成员函数;const对象只能调用const成员函数,不能调用非const成员函数。
任何不会修改数据成员的函数都应该声明为const类型。如果在编写const成员函数时,不慎修改了数据成员,或者调用了其它非const成员函数,编译器将指出错误,这无疑会提高程序的健壮性。
[img]JAVA语言中有C++中的 const 语句么?
Java没有const,常量用final表示
Java里的方法(method),跟C++里的函数(function)是对应的,二者都有对象
final修饰渣氏变量和参数,都将对其无法修改
修饰方法,指如判散其无法被子类方法覆盖
修饰类,则此类无法被冲耐继承
java判断题1.在Java的方法中定义一个常量要用const关键字。
1. 错误。在java中定义常量用final。
2. 错误。抽象类中必须要有抽象方法,但是同基物时也可以有非抽象方法。
3. 正确。
4. 正确。
5. 正确。
6. 错误。是单继承。一个类最多只能够有一个基类,用extends实现。
7. 错误。Final是最终类,不能再派生。
8. 正确。
9. 错误。
10. 正确。
11. 错误。
12. 正确。
13. 正确。
14. 错误。可以有方法体。
15. 错误。不是子类和父类之间吧。
16. 正确。
17. 错误。不埋备可以,是单继承。
18. 正确。
19. 正确。
20. 错误。
21. 正确弯锋毁。
22. 正确。
23. 错误。只是为了说明他不可派生。
24. 错误。
25. 错误。Java程序也可以是applet程序,如果是applet,不用main方法。。。由init初始化,start启用。
26. 正确。
27. 错误。
28. 错误。可以被继承,但是不能被访问。
29. 正确。
30. 正确。
31. 错误。
32. 正确。
33. 正确。
34. 错误。方法体中的变量只在方法中有效,而且和位置有关。
35. 错误。
36. 正确。
37. 正确。
38. 正确。
39. 错误。和20题一样
40. 正确。
java里面的const-string什么意思
java里面没裤族法用const。
1、可以用final关键字。
2、例如 final int m = 9。
被声明为final的变量不能被再次赋值。
final也可以用碧纯笑于声明方法或类,被声明为final的方法或类不能被继承。
3、注意const是java的保留字以备扩充。
const-String表示定义好的字悔含符串常量在任何位置都不能被更改。
java const
java const是什么, 让我们一起来了解一下:
const是java中的预留关键字(java中预留关键字还有goto),const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。也可以定义const常量,具有不可变性。
const的几种常见用法?
1、用于定义常量变量,这样这个变量在后面就不可以再被修改。
const int Val = 10; //Val = 20; //错误,不可被修改
2、保护传递参数时参数不被修改,如果使用引用传旅稿递参数或按地址传递参数给一个函数,在这个函数里这个参数的值若被修改,则函数外部传进来的变量的值也发生改变,若想保护传进来的变量不被修改,可以使用const保护。
void fun1(const int val) { //val = 10; //出错 } void fun2(int val) { val = 10; //没有出错 } void main() { int a = 2; int b = 2; fun1(a); //因为出错,这个函数结束时a的值还是2 氏镇旅fun2(b);//因为没有出错,函数结束时b的值为10 }
3、类中使用const修饰函数防止修改非static类成员变量。
class { public: void fun() const //加const修饰 { a = 10; //出错,不可修改非static变量 b = 10; //对,可以修改 } private: int a ; static int b; }
歼凳拓展一下:
const是java中的预留关键字(java中预留关键字还有goto),现在没有作为关键字,以后的版本中可能扩展用,但现在常用于C,C++中。C中的const类似于final。
java保留字是什么?
Java保留字是对Java编译器有特殊含义的字符串,作迹迹为编译器和程序员的姿野并一个约定,使其告诉编译器其声明的变量类型、类、方法特性等信息。脊虚按其用途划分为以下四类:
1、用于数据
有boolean、byte、char、 double、 false、float、int、long、new、short、true、void、instanceof。
2、用于语句
有break、case、 catch、 continue、 default 、do、 else、 for、 if、return、switch、try、while、 finally、 throw、this、 super。
3、用于修饰
有abstract、final、native、private、 protected、public、static、synchronized、transient、volatile。
4、用于方法、类、接口、包和异常
有class、 extends、 implements、interface、package、import、throws。
扩展资料
java保留字的举例分析
1、 goto 跳转
基本无任何作用,结构化程序设计完全不需要该语句即可完成各种流程,而且goto语句的使用往往会使程序的可读性降低。
2、const 静态
作为一个类型修饰符,使用const声明的对象不能更新,与final有些类似。
3、native 本地
java的不足除了体现在运行速度上要比传统的C++慢许多之外,还无法直接访问到操作系统底层(如系统硬件等),为此使用native方法来扩展程序的功能。
参考资料来源:百度百科-java关键字
关于javaconst和javaconstants的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。