首页
留言
关于
统计
友情链接
Search
1
java面试题05
240 阅读
2
java魔方矩阵
109 阅读
3
Java中的包
96 阅读
4
java中接口的作用
93 阅读
5
java中this关键字
68 阅读
随笔
笔记
计算机基础
JAVA
web前端
分享
经验
软件
其他
登录
/
注册
Search
标签搜索
JAVA
笔记
面试
五子棋
游戏
阿涛
累计撰写
23
篇文章
累计收到
9
条评论
首页
栏目
随笔
笔记
计算机基础
JAVA
web前端
分享
经验
软件
其他
页面
留言
关于
统计
友情链接
搜索到
17
篇与
笔记
的结果
2022-03-19
java中的接口
接口的定义:interface 接口名{ ... }接口就是一个特殊的类接口中不能有字段,但可以有常量,默认被public static final修饰:interface X{ int a = 1; }等价于interface X{ public static final int a = 1; }接口的方法:1.接口中的所有方法,默认被public abstract修饰,也就是说接口中的所有方法都是抽象方法。interface X{ void f1(); }等价于interface X{ public abstract void f1(); }2.接口中也可以定义普通方法:interface X { void f1() { ... } }注意:Java中,有一个规范,当一个变量同时被static和final修饰的时候,该变量的名字中的所有字母都应该时大写的,单词和单词之间用 "_" 隔开。例:interface X{ String MY_NAME = "第一帅"; static final int HER_AGE = 20; final double HIS_SALARY = 30000; }接口无法被实例化,因为接口中的方法都是抽象的。接口的实现:class 类名 implements 接口名{ //实现接口的所有抽象方法 }接口中的抽象方法,在非抽象子类中,必须全部得以实现:interface I{ void aa(); //接口中的方法。默认被public修饰 } class A implements I{ public void aa(){ //所以子类重写方法时,访问修饰符也必须是public System.out.println("A.aa()"); } }一个类只能继承一个类,但一个类可实现多个接口:interface A{ void aa(); } interface B{ void aa(); void bb(); } class X implements A, B{ public void aa(){ //一个类实现两个接口, //两个接口的抽象方法必须全部实现 } //如果多个接口出现了相同的方法, public void bb(){ //只实现一次即可 } }一个类在继承一个类的同时,可以再去实现其他多个接口:class X extends A implements B, C{ }一个类实现一个接口,是一种比较特殊的“继承”关系,所以也能发生向上转型:interface A{ } class X implements A{ } public class Test{ public static void main(String[] args){ X x = new X(); A a = new X(); //这里发生了向上转型 } }接口的扩展接口和接口之间,时多继承的关系,也就是说,一个接口可以继承其他多个接口,等价于汇总了多个接口中的所有抽象方法到一个接口中:interface A{ void aa(); } interface B{ void bb(); } interface C extends A, B{ } class X implements C{ //接口C没有任何抽象方法, public void aa(){ //但它继承了A和B中的所有抽象方法 } public void bb(){ } }
2022年03月19日
23 阅读
0 评论
0 点赞
2022-03-15
java中类的设计技巧
1. 一定要保证数据私有这是最重要的;绝对不要破坏封装性。2. 一定要对数据进行初始化Java 不会为你初始化局部变量,但是会对对象的实例字段进行初始化。最好不要依赖于系统的默认值,而是应该显式地初始化所有的数据,可以提供默认值,也可以在所有构造器中设置默认值。3. 不要在类中使用过多的基本类型这个想法是要用其他地类替换使用多个相关的基本类型。这样会使类更易于理解,也更易于修改。例如,用一个 Address 的新类替换一个 Customer 类中的以下实例字段:class Customer { private String street; private String city; private String state; private int zip; }class Address { private String street; private String city; private String state; private int zip } class Customer { private Address address; }4. 不是所有的字段都需要单独的字段访问器和字段更改器在对象中,常常包含一些不希望别人获得或设置的实例字段。5. 分解有过多职责的类。6. 类名和方法名要能够体现它们的职责7. 优先使用不可变的类不可变类——没有方法能修改对象的状态。方法并不是更改对象,而是返回 状态已修改的新对象。更改对象的问题在于,如果多个线程试图同时更新一个对象,就会发生并发更改,其结果是不可预料的。如果类是不可变的,就可以安全地在多个线程间共享其对象。当然,并不是所有类都应当是不可变的,如果员工加薪时让 raiseSalary 方法返回一个新的 Employee 对象,这会很奇怪。
2022年03月15日
35 阅读
0 评论
0 点赞
2022-03-02
Java中的大数
java中的基本类型表示数值的有整型和浮点型,而它们都有范围,当我们的数值特别大时,就要用到大数。
2022年03月02日
39 阅读
0 评论
0 点赞
2022-02-25
Java中的运算符
运算符1. 算数运算符在 Java 中,使用算数运算符 +、-、*、/、% 表示加、减、乘、除、求余(取模)运算。当参与运算的两个操作数都是整数时,结果为正数,操作数中有浮点数时,结果为浮点数。需要注意,整数被 0 除将会产生一个异常,而浮点数被 0 除将会得到无穷大或 NaN 结果。2. 数学函数与常量在 Math 类中,包含了各种各样的数学函数。例如,要想计算一个数值的平方根,可以使用 sqrt 方法:double x = 4; double y = Math.sqrt(x); System.out.println(y); // prints 2.0注意,println 方法和 sqrt 方法存在微小差异。println 方法处理 System.out 对象。但是,Math 类中的 sqrt 方法不处理任何对象,这样的方法称为静态方法。有关静态方法的详细内容将在第 4 章学习。在 Java 中没有幂运算,因此需要借助 Math 类的 pow 方法:double y = Math.pow(x, a);将 y 的值设置为 x 的 a 次幂(x^a^)。pow 方法有两个 double 类型参数,其返回结果也为 double 类型。Math 类提供了一些常用的三角函数:Math.sinMath.cosMath.tanMath.atanMath.atan2还有指数函数以及它的反函数--自然对数以及以 10 为底的对数:Math.expMath.logMath.log10最后,Java 还提供了两个用于表示 π 和 额 е 常量的最接近的近似值:Math.PIMath.E提示:不必在数学方法名和常量名前添加前缀 "Math" ,只要在源文件的顶部加上下面这行代码就可以了。import static java.lang.Math.*;例如:System.out.println("The square root of \u03C0 is" + sqrt(PI));提示:Math 类提高了一些方法时整数有更好的运算安全性。如果一个计算溢出,数学运算符只是悄悄地返回错误结果而不做任何提醒。例如:10 亿乘以 3(1000000000 * 3)的计算结果为 -1294967296,因为最大的 int 值也只是刚刚超过 20 亿。不过,如果调用 Math.multiplyExact(1000000000, 3),就会产生一个异常。另外还有一些方法(addExact、subtractExact、incrementExact、decrementExact 和 negateExact)也可以正确地处理 int 和 long 参数。3. 数值类型之间的转换我们经常需要将一种数值类型转换为另一种类型,下图给出了数值类型之间的合法转换。其中,实线箭头表示无信息丢失的转换,虚线箭头表示可能有精度损失的转换。当用一个二元运算符连接两个值时,先要将两个操作数转换为同一类型,然后再进行计算。如果两个操作数中有一个是 double 类型,另一个操作数就会转换为 double 类型。否则,如果其中一个操作数为 float 类型,另一个操作数将会转换为 float 类型。否则,如果其中一个操作数为 long 类型,另一个操作数将会转换为 long 类型。否则,两个操作数都将被转换为 int 类型。4. 强制类型转换强制类型转换的语法格式是在圆括号中给出想要转换的目标类型,后面紧跟待转换的变量名。例如:double x = 9.97; int nx = (int)x;这样,变量 nx 的值为 9,因为强制类型转换通过截断小数部分将浮点值转换为整型。提示:如果想得到四舍五入最接近的整数,需要使用 Math.round 方法:double x = 9.97; int nx = (int)Math.round(x);现在,变量 nx 的值为 10。Math.round 方法返回的结果为 long 类型,可以通过显式的强制类型转换将 long 类型转换为 int 类型。5. 结合赋值和运算符例如:x += 4;等价于:x = x + 4;注意:如果运算符得到一个值,其类型与左侧操作数类型不同,就会发生强制类型转换。例如:int x = 0; x += 3.5;其结果为3。6. 自增与自减运算符Java 提供了自增、自减运算符:n++ 将变量 n 的当前值加 1,n-- 则将 n 的值减 1。例如:int n = 12; n++;将 n 的值改为 13。由于这些运算符改变的是变量的值,所以它们不能应用于数值本身。例如,4++ 就不是一个合法语句。实际上,这些运算符有两种形式,上面介绍的是运算符放在操作数后面的 “后缀” 形式。还有一种 “前缀” 形式:++n 。后缀和前缀形式都会是变量值加 1 或减 1。但用在表达式中时,二者就有区别了。前缀形式会先完成加 1;而后缀形式会使用变量原来的值。建议不要在表达式中使用 ++ 。
2022年02月25日
46 阅读
0 评论
0 点赞
2022-02-17
Java中的基本数据类型
java中提供了8中基本数据类型。
2022年02月17日
57 阅读
0 评论
0 点赞
1
2
3
4