-
2021-03-11 16:34:59
[分享]几段有趣的JAVA代码
下面是一些有趣的JAVA代码,大家可以尝试下不要编译运行代码先猜一下代码的运行结果,然后再动手验证.
主要考察JAVA的基本功,各位可以把自己作对的题号跟贴贴出来.
建议第一页不要有讨论为什么的帖子,方便大家测试
代码一public class LongDivision {
public static void main(String[] args) {
final long MICROS_PER_DAY = 24 * 60 * 60 * 1000 * 1000;
final long MILLIS_PER_DAY = 24 * 60 * 60 * 1000;
System.out.println(MICROS_PER_DAY / MILLIS_PER_DAY);
}
}
代码二
public class Multicast {
public static void main(String[] args) {
System.out.println((byte) -1);
System.out.println((char) (byte) -1);
System.out.println((int) (char) (byte) -1);
}
}
代码三
public class DosEquis{
public static void main(String[] args) {
char x = 'X';
int i = 0;
System.out.println(true ? x : 0 );
System.out.println(true ? x :65536);
System.out.println(false ? i : x );
}
}
代码四
public class FinallyT{
public static void main(String[] args){
System.out.println(test());
}
public static boolean test(){
try{
return false;
}finally{
return true;
}
}
}
代码五
public class ExceptionT{
public static void main(String[] args){
ExceptionT pointer =null;
try{
pointer.print();
}catch(NullPointerException e){
System.out.println(\"Hello,Exception!\");
}
}
public static void print(){
System.out.println(\"Hello,World!\");
}
}
更多相关内容 -
看完这些 Java 代码优秀案例,一定对你有提升!
2020-05-29 00:00:00下面是一个直接使用InputStream和OutputStream进行文件读写的代码: @Test public void testOutAndInputStream(){ try { DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream("/...点击上方 "程序员小乐"关注, 星标或置顶一起成长
每天凌晨00点00分, 第一时间与你相约
每日英文
This is the way I am. I treat well those who treat me well.
我就是这么一个人,谁对我好我就对谁好。
每日掏心话
每一发奋努力的背后,必有加倍的赏赐。再长的路,一步步也能走完,再短的路,不迈开双脚也无法到达。诚心诚意,诚字的另一半就是成功。
来自:泥瓦匠BYsocket | 责编:乐乐
程序员小乐(ID:study_tech) 第 881 次推文 图源:百度往日回顾:GitHub下载,可达到2MB/s,堪称加速神器!
正文
前言
程序的性能受到代码质量的直接影响。这次主要介绍一些代码编写的小技巧和惯例。虽然看起来有些是微不足道的编程技巧,却可能为系统性能带来成倍的提升,因此还是值得关注的。
慎用异常
在Java开发中,经常使用try-catch进行错误捕获,但是try-catch语句对系统性能而言是非常糟糕的。虽然一次try-catch中,无法察觉到她对性能带来的损失,但是一旦try-catch语句被应用于循环或是遍历体内,就会给系统性能带来极大的伤害。
以下是一段将try-catch应用于循环体内的示例代码:
@Test public void test11() { long start = System.currentTimeMillis(); int a = 0; for(int i=0;i<1000000000;i++){ try { a++; }catch (Exception e){ e.printStackTrace(); } } long useTime = System.currentTimeMillis()-start; System.out.println("useTime:"+useTime); }
上面这段代码运行结果是:
useTime:10
下面是一段将try-catch移到循环体外的代码,那么性能就提升了将近一半。如下:
@Test public void test(){ long start = System.currentTimeMillis(); int a = 0; try { for (int i=0;i<1000000000;i++){ a++; } }catch (Exception e){ e.printStackTrace(); } long useTime = System.currentTimeMillis()-start; System.out.println(useTime); }
运行结果:
useTime:6
使用局部变量
调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度快。其他变量,如静态变量、实例变量等,都在堆(Heap)中创建,速度较慢。
下面是一段使用局部变量进行计算的代码:
@Test public void test11() { long start = System.currentTimeMillis(); int a = 0; for(int i=0;i<1000000000;i++){ a++; } long useTime = System.currentTimeMillis()-start; System.out.println("useTime:"+useTime); }
运行结果:
useTime:5
将局部变量替换为类的静态变量:
static int aa = 0; @Test public void test(){ long start = System.currentTimeMillis(); for (int i=0;i<1000000000;i++){ aa++; } long useTime = System.currentTimeMillis()-start; System.out.println("useTime:"+useTime); }
运行结果:
useTime:94
通过上面两次的运行结果,可以看出来局部变量的访问速度远远高于类成员变量。
位运算代替乘除法
在所有的运算中,位运算是最为高效的。因此,可以尝试使用位运算代替部分算术运算,来提高系统的运行速度。最典型的就是对于整数的乘除运算优化。
下面是一段使用算术运算的代码:
@Test public void test11() { long start = System.currentTimeMillis(); int a = 0; for(int i=0;i<1000000000;i++){ a*=2; a/=2; } long useTime = System.currentTimeMillis()-start; System.out.println("useTime:"+useTime); }
运行结果:
useTime:1451
将循环体中的乘除运算改为等价的位运算,代码如下:
@Test public void test(){ long start = System.currentTimeMillis(); int aa = 0; for (int i=0;i<1000000000;i++){ aa<<=1; aa>>=1; } long useTime = System.currentTimeMillis()-start; System.out.println("useTime:"+useTime); }
运行结果:
useTime:10
上两段代码执行了完全相同的功能,在每次循环中,都将整数乘以2,并除以2。但是运行结果耗时相差非常大,所以位运算的效率还是显而易见的。
提取表达式
在软件开发过程中,程序员很容易有意无意地让代码做一些“重复劳动”,在大部分情况下,由于计算机的高速运行,这些“重复劳动”并不会对性能构成太大的威胁,但若希望将系统性能发挥到极致,提取这些“重复劳动”相当有意义。
比如以下代码中进行了两次算术计算:
@Test public void testExpression(){ long start = System.currentTimeMillis(); double d = Math.random(); double a = Math.random(); double b = Math.random(); double e = Math.random(); double x,y; for(int i=0;i<10000000;i++){ x = d*a*b/3*4*a; y = e*a*b/3*4*a; } long useTime = System.currentTimeMillis()-start; System.out.println("useTime:"+useTime); }
运行结果:
useTime:21
仔细看能发现,两个计算表达式的后半部分完全相同,这也意味着在每次循环中,相同部分的表达式被重新计算了。
那么改进一下后就变成了下面的样子:
@Test public void testExpression99(){ long start = System.currentTimeMillis(); double d = Math.random(); double a = Math.random(); double b = Math.random(); double e = Math.random(); double p,x,y; for(int i=0;i<10000000;i++){ p = a*b/3*4*a; x = d*p; y = e*p; } long useTime = System.currentTimeMillis()-start; System.out.println("useTime:"+useTime); }
运行结果:
useTime:11
通过运行结果我们可以看出来具体的优化效果。
同理,如果在某循环中需要执行一个耗时操作,而在循环体内,其执行结果总是唯一的,也应该提取到循环体外。
例如下面的代码:
for(int i=0;i<100000;i++){ x[i] = Math.PI*Math.sin(y)*i; }
应该改进成下面的代码:
//提取复杂,固定结果的业务逻辑处理到循环体外 double p = Math.PI*Math.sin(y); for(int i=0;i<100000;i++){ x[i] = p*i; }
使用arrayCopy()
数组复制是一项使用频率很高的功能,JDK中提供了一个高效的API来实现它。
/** * @param src the source array. * @param srcPos starting position in the source array. * @param dest the destination array. * @param destPos starting position in the destination data. * @param length the number of array elements to be copied. * @exception IndexOutOfBoundsException if copying would cause * access of data outside array bounds. * @exception ArrayStoreException if an element in the <code>src</code> * array could not be stored into the <code>dest</code> array * because of a type mismatch. * @exception NullPointerException if either <code>src</code> or * <code>dest</code> is <code>null</code>. */ public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
如果在应用程序中需要进行数组复制,应该使用这个函数,而不是自己实现。
下面来举例:
@Test public void testArrayCopy(){ int size = 100000; int[] array = new int[size]; int[] arraydest = new int[size]; for(int i=0;i<array.length;i++){ array[i] = i; } long start = System.currentTimeMillis(); for (int k=0;k<1000;k++){ //进行复制 System.arraycopy(array,0,arraydest,0,size); } long useTime = System.currentTimeMillis()-start; System.out.println("useTime:"+useTime); }
运行结果:
useTime:59
相对应地,如果在程序中,自己实现数组复制,其等价代码如下:
@Test public void testArrayCopy99(){ int size = 100000; int[] array = new int[size]; int[] arraydest = new int[size]; for(int i=0;i<array.length;i++){ array[i] = i; } long start = System.currentTimeMillis(); for (int k=0;k<1000;k++){ for(int i=0;i<size;i++){ arraydest[i] = array[i]; } } long useTime = System.currentTimeMillis()-start; System.out.println("useTime:"+useTime); }
运行结果:
useTime:102
通过运行结果可以看出效果。
因为System.arraycopy()函数是native函数,通常native函数的性能要优于普通函数。仅出于性能考虑,在程序开发时,应尽可能调用native函数。
使用Buffer进行I/O操作
除NIO外,使用Java进行I/O操作有两种基本方式;
使用基于InpuStream和OutputStream的方式;
使用Writer和Reader;
无论使用哪种方式进行文件I/O,如果能合理地使用缓冲,就能有效地提高I/O的性能。
InputStream、OutputStream、Writer和Reader配套使用的缓冲组件。
如下图:
使用缓冲组件对文件I/O进行包装,可以有效提升文件I/O的性能。
下面是一个直接使用InputStream和OutputStream进行文件读写的代码:
@Test public void testOutAndInputStream(){ try { DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream("/IdeaProjects/client2/src/test/java/com/client2/cnblogtest/teststream.txt")); long start = System.currentTimeMillis(); for(int i=0;i<10000;i++){ dataOutputStream.writeBytes(Objects.toString(i)+"\r\n"); } dataOutputStream.close(); long useTime = System.currentTimeMillis()-start; System.out.println("写入数据--useTime:"+useTime); //开始读取数据 long startInput = System.currentTimeMillis(); DataInputStream dataInputStream = new DataInputStream(new FileInputStream("/IdeaProjects/client2/src/test/java/com/client2/cnblogtest/teststream.txt")); while (dataInputStream.readLine() != null){ } dataInputStream.close(); long useTimeInput = System.currentTimeMillis()-startInput; System.out.println("读取数据--useTimeInput:"+useTimeInput); }catch (Exception e){ e.printStackTrace(); } }
运行结果:
写入数据--useTime:660 读取数据--useTimeInput:274
使用缓冲的代码如下:
@Test public void testBufferedStream(){ try { DataOutputStream dataOutputStream = new DataOutputStream( new BufferedOutputStream(new FileOutputStream("/IdeaProjects/client2/src/test/java/com/client2/cnblogtest/teststream.txt"))); long start = System.currentTimeMillis(); for(int i=0;i<10000;i++){ dataOutputStream.writeBytes(Objects.toString(i)+"\r\n"); } dataOutputStream.close(); long useTime = System.currentTimeMillis()-start; System.out.println("写入数据--useTime:"+useTime); //开始读取数据 long startInput = System.currentTimeMillis(); DataInputStream dataInputStream = new DataInputStream( new BufferedInputStream(new FileInputStream("/IdeaProjects/client2/src/test/java/com/client2/cnblogtest/teststream.txt"))); while (dataInputStream.readLine() != null){ } dataInputStream.close(); long useTimeInput = System.currentTimeMillis()-startInput; System.out.println("读取数据--useTimeInput:"+useTimeInput); }catch (Exception e){ e.printStackTrace(); } }
运行结果:
写入数据--useTime:22 读取数据--useTimeInput:12
通过运行结果,我们能很明显的看出来使用缓冲的代码,无论在读取还是写入文件上,性能都有了数量级的提升。
使用Wirter和Reader也有类似的效果。
如下代码:
@Test public void testWriterAndReader(){ try { long start = System.currentTimeMillis(); FileWriter fileWriter = new FileWriter("/IdeaProjects/client2/src/test/java/com/client2/cnblogtest/teststream.txt"); for (int i=0;i<100000;i++){ fileWriter.write(Objects.toString(i)+"\r\n"); } fileWriter.close(); long useTime = System.currentTimeMillis()-start; System.out.println("写入数据--useTime:"+useTime); //开始读取数据 long startReader = System.currentTimeMillis(); FileReader fileReader = new FileReader("/IdeaProjects/client2/src/test/java/com/client2/cnblogtest/teststream.txt"); while (fileReader.read() != -1){ } fileReader.close(); long useTimeInput = System.currentTimeMillis()-startReader; System.out.println("读取数据--useTimeInput:"+useTimeInput); }catch (Exception e){ e.printStackTrace(); } }
运行结果:
写入数据--useTime:221 读取数据--useTimeInput:147
对应的使用缓冲的代码:
@Test public void testBufferedWriterAndReader(){ try { long start = System.currentTimeMillis(); BufferedWriter fileWriter = new BufferedWriter( new FileWriter("/IdeaProjects/client2/src/test/java/com/client2/cnblogtest/teststream.txt")); for (int i=0;i<100000;i++){ fileWriter.write(Objects.toString(i)+"\r\n"); } fileWriter.close(); long useTime = System.currentTimeMillis()-start; System.out.println("写入数据--useTime:"+useTime); //开始读取数据 long startReader = System.currentTimeMillis(); BufferedReader fileReader = new BufferedReader( new FileReader("/IdeaProjects/client2/src/test/java/com/client2/cnblogtest/teststream.txt")); while (fileReader.read() != -1){ } fileReader.close(); long useTimeInput = System.currentTimeMillis()-startReader; System.out.println("读取数据--useTimeInput:"+useTimeInput); }catch (Exception e){ e.printStackTrace(); } }
运行结果:
写入数据--useTime:157 读取数据--useTimeInput:59
通过运行结果可以看出,使用了缓冲后,无论是FileReader还是FileWriter的性能都有较为明显的提升。
在上面的例子中,由于FileReader和FilerWriter的性能要优于直接使用FileInputStream和FileOutputStream所以循环次数增加了10倍。
欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,学习能力的提升上有新的认识,欢迎转发分享给更多人。
欢迎各位读者加入订阅号程序员小乐技术群,在后台回复“加群”或者“学习”即可。
猜你还想看
关注订阅号「程序员小乐」,收看更多精彩内容
嘿,你在看吗?
-
java代码大全
2021-03-07 09:33:03【实例简介】该书适合刚入手java的童鞋,该书由浅入深,是一个不错的自学用书。导论Java程序设计导论1.1 Hello, World!程序清单1: Hello world.iava1/2*@(#)HelloWorld. java 0.30 08/28/104* Show message” Hello,...【实例简介】
该书适合刚入手java的童鞋,该书由浅入深,是一个不错的自学用书。
导论
Java程序设计
导论
1.1 Hello, World!
程序清单1: Hello world.iava
1/
2*@(#)HelloWorld. java 0.30 08/28/10
4* Show message” Hello, World!” in Console
6 @author xiaohua xu
*@ version②.30
8 *k @ since 0.20
@see System. in
11
12
13 public class HelloWorld t
public static void main(String args)t
6
System. out. println( "Hello, World!
18}
程序清单2: Hello WorldDialog java
1
2 *@(#)HelloWorldDialog java 0.20 08/28/10
4* Show message Hello, World!' in JOptionPane
6 @author xiaohua xu
@version 0.30
8 @since 0.20
9 @see javax. swing JOptionPane
OT
12 import javax. swing JOptionPane
13
14 public class Hel loWor ldDialog i
5678
String message =>Hello, World!
public static void main (Stringl arg
JOptionPane showMessageDialog(nuLl, message);
1
20
程序清单3: Hello WorldApp.java
/
半米
2*@#)He L ldApp. java 0.30 08/28/10
4* Show message Hello, World! in Console
DONT DⅠSTRⅠ BUTE IT!
April 15,2012
2基础知识
Java程序设计
6 *k @author Xiaohua xu
7 @version 0.30
8 *k @since 0.20
@see System. in
10
12 public class he l lowor ldapp i
13
public void maino i
System, out. print("Hello, World! )
System, out. println(;
11111
56789
public static void main (String] args)t
Hel ldApp app= new He l loWor ldApp;
20
app. main(
21
2
12 Unicode演示
匚程序清单4 UnicodeDemo
1/*米
2* @(#Uni codeDemo, java 0. 20 08/28/10
4* Show Uni code u2122 as Java
TM
6 @author Xiaohua Xu
@version 0.20
8 @since 0.10
9 @see JoptionPane
1O冰
12 pubLic class Uni code Demo I
3
public static final char TRADE_MARK \u2122
15 public static void show (String str)i
javax. swing.JOptionPane showMessageDialog(nuLl, str);
1112
public static void main (String args)t
String message=”Java”+ TRADE MARK;
System, out. println(message);
show (message)
System. exit(o);
26
2基础知识
21加法
DONT DⅠSTRⅠ BUTE IT!
April 15,2012
2基础知识
Java程序设计
程序清单 Addition.java
1/**
2 * @(*)Addition. java
4 *@author Xiaohua Xu
5*@ version0.92009/03/05
8 import javax. swing JOptionPane
10 public class Addition i
public static void main( Stringl] args)t
111
String firstNumber;
String secondNumber
16
int number 1
int number 2
18
int sum,
19
firstNumber JOptionPane showInputDialog("First Num)
secondNumber OPtion Pane. showInputDialog ("Second Num
number1 Integer parseInt(firstNumber )
2345
number 2 Integer parseInt(secondNumber);
sum number 1+ number 2
J0ption Pane showMessageDialogo
6789o
The Sum is:”+sum
Results”
JOptionPane PLAIN_MESSAGE
32
System. exit( 0
22浮点数注意
程序清单6: DoubleDemo. java
/*
2 *@(#)DoubL eDemo java
4* @author Xiaohua Xu
5*@ verslon1.02009/03/05
8 public class Doub leDemo t
public static void main(String args)t
double x=0.0:
//初始量
12
double delta =0.1
增长量
int n=10
//迭代次数
14
5
System. out. println(x)
//输出到屏幕
DONT DⅠSTRⅠ BUTE IT!
April 15,2012
2基础知识
Java程序设计
for(int讠=0;i
1
678
x t= delta
/每次递增 delta
System. out. println(x);
//屏幕输出
19
0
21
23数值最值
程序清单z: MaxMin ValueOfVariableDemo java
1/*米
2 *@(#)MaxMinValueOfVariableDemo java
3*输出冬和变量的最大值和最小值
@author Xiaohua Xu
6*@ verslon1.0010/03/15
9 public class MaxMinValueOfVariableDemo t
10
public static void main(Stringl args) t
11
System. out. printInG The largest byte value is
+ Byte. MAX_ VALUE+”,”);
13
System. out. printLn( The smallest byte value is
+ Byte. MIN_VALUE+”.”);
15
System, out. println( The largest short value is
1
+ Short. maX_ VALUE+”.”);
8
System, out println("The smallest short value is
+ Short. MIN VALUE+”.”);
20
System, out. println( The largest integer value is
2
+ Integer. MAX VALUE+”.”);
System, out. println(" The smallest integer value is
+工 nteger MIN_ VALUE+”.”);
System. out. println( The largest long value is
Long MAX VALUE
System. out. println(" The largest long value is
2
Long. MIN_VALUE+”.);
30
31
ystem, out. printLn The largest float value is
+ FLoat. MAX VALUE+”.”);
33
System, out. printLn( The smallest float value is
34
+ Float. MIN value+”.”);
35
36
System, out. println(The largest double value is
+ Double. mAX_VALU+”.”);
System, out. println( The smallest double value is
+ Double. MIN VALUE+”.”)
41
42
循环
DONT DⅠSTRⅠ BUTE IT!
April 15,2012
2基础知识
Java程序设计
程序清单8: WhileDo. java
1/**
2 *@(#)WhileDo. java
4* Since b"' is already false when it reaches the
5* test, the loop never executes
@author Xiaohua xu
8*@ verslon.92009/03/05
11 public class Whiledo i
12
public static void main(String args)t
boolean b= false:
1111
4567
while( b)i
System. out. println( Execute WhileDo while b is true);
tt toc
1
程序清单g: WhileDoTest. java
/
@(#WhiLe DoTest java
4*@author Xiaohua Xu
5*@ verslon0.92009/03/05
8 import javax. Swing JOptionPane
10 public class Whiledotest t
11
11
2
public static void main(String[] args)t
int b= 2
int s=
1
while( b>s)t
18
JOptionPane. showMessageDialogo
1
null
0
Big is still bigger”
21
Results
2
JOption Pane. INFORMATION_ MESSAGE
String big =JOptionPane. showInputDialog("Big Number>)
26
String small= JOptionPane show InputDialog( SmaLl Number
b= Integer parseInt( big )
Integer parseInt( smaLl)
31
ystem. exit(0);
DONT DⅠSTRⅠ BUTE IT!
April 15,2012
2基础知识
Java程序设计
32
33
程序清单10: Do While. java
2 * @()DoWhileTest java
4*@author Xiaohua Xu
5*@ version0.92009/03/05
7 import javax. swing JOptionPane;
9 public class DoWhileTest t
public static void main ([ args)t
int b= 2;// preload variables
int s= 1;// preload variables
1111111
4
do t
56789
JOptionPane. showMessageDialogo
null
Big is still Bigger”
Results”,
JOption Pane INFORMATION_MESSAGE
222
012345
String big JOptionPane showInputDialog("Big Number")
String smaLl= JOptionPane. showInputDialog("SmaLl Number
26
b= Integer parseInt(big)
2
s=Integer parseInt(smaLL)
789o
f while(b> s;
System, exit( 0)
31
32
25选择
程序清单11: Selection Test java
米*/I
2* @()SelectionTest java
4* @author Xiaohua Xu
5*@ version9.92009/03/05
6*/
8 import javax. swing JOptionPane;
10 public class SelectionTest t
public static void main(String[ args) t
DONT DⅠSTRⅠ BUTE IT!
April 15,2012
2基础知识
Java程序设计
14
String big JOptionPane showInputDialog("Big Number>)
15
String small= J0ptionPane showInputDialog( SmaLL Number)
int b= Integer parseInt(big);
比t
Integer parseInt(smaLl);
1
1
String out =(b>s? Big was Larger: Small was larger
20
JOptionPane showMessageDialog(nuLl, out
Results", OPtion Pane. INFORMATION_MESSAGE
System. exit(0);
26
2.6增量
程序清单12: PrePostIncrement. java
/*米
2 *@(#PrePostIncrement java
4* @author Xiaohua Xu
5*@ verslon0.92009/03/05
8 public class PrepostIncrement
public static void main (String args)
11
int x= a
12
System.out. println(” Baseline,x=”+x);
System, out. println( >Pre-increment =++x=>+++X )
1
System, out. printLn( "After increment, x="+X);
X=0;
System,out. println(” 2nd baseline,x=”+×);
System. out. println( "Post-increment = X++=3+X++)
1
System, out. println( After increment,x
X
//System. exit( 0);
27温度转换
程序清单13: FahrenheitToCelsius.java
2 *@(#)FahrenheitToCelsius java
4* celsius =9(fahrenheit- 32)
@author xiaohua Xu
7*@ version0.92009/03/05
DONT DⅠSTRⅠ BUTE IT!
April 15,2012
3简单程序
Java程序设计
10 public class FahrenheitTocelsius i
public static void main(String args)t
double fahrenheit 100;
111111
double celsius =(5.0/9.0*(fahrenheit -32)
4567890
System. out. println(” Fahrenheit”+ fahrenheit+”is
+ celsius+” in Celsius.”);
3简单程序
31数学工具
程序清单14: AbsDemo.java
1/*米
2 *@(#) AbsDemojava
木
4 @author Xiaohua Xu
5*@ version1.002009/03/05
9 public class absDemo t
12
public static void main(Stringl args)t
double x =-0.0.
1
System.out, println(”abs(”++”)=”+Math.abs(x));
6
20
System. out. println(”abs(”+×+”)=”+Math.abs(x);
Double. POSITIVE INFINITY
ystem.out. println(”abs(”+x+”)=”+Math.abs(x);
x= Double NeGATive Infinity
System. out. println(”abs(”+Ⅹ+”)
Math. abs(x))
x= Double nan
System. out. println(”abs(”+x+”)=”+Math.abs(x));
10.5
30
double y
20.1
31
System.out. println(”max(”+x+
y+”)
Math. max
32
System.out. println(”mix(”+X+”,”+y+”)=”+Math.min
33
ystem.out. println(”max”+x+
十
nax(x, y
DONT DⅠSTRⅠ BUTE IT!
10
April 15, 2012
【实例截图】
【核心代码】
-
java代码模板
2012-05-17 18:32:43亲,只需要用文本工具打开把我的名字全换掉就OK啦,想改的详细点就自己去别的地方捅捅吧。 -
java课程设计(简易计算器)源代码 JAVA 源代码有解析 免费分享
2020-12-07 14:13:48标题:java课程设计简易计算器源代码 JAVA 源代码有解析 免费分享 先言 这是我挺久以前课程设计java写的计算器,只能实现基本的功能,我现在分享出来希望能帮助到别人。写得其实挺一般的,见谅见谅。有课程设计任务...标题:java课程设计(简易计算器)源代码 JAVA 源代码有解析 免费分享
先言
这是我挺久以前课程设计java写的计算器,只能实现基本的功能,我现在分享出来希望能帮助到别人。写得其实挺一般的,见谅见谅。有课程设计任务的学弟学妹也是写计算器的可以看看参考参考。源代码里我写有挺多解析的,能帮助理解。
功能描述:
参考 Windows操作系统提供的计算器设计一个实用的计算器,要求除了具有普通的计算功能外,还具有保存计算过程的功能。
①单击计算器上的数字按钮(0、1、2、3、4、5、6、7、8、9)可以设置参与计算的运算数。
②单击计算器上的运算符按钮(+、—、*、/)可以选择运算符号。
③单击计算器上的函数按钮可以计算出相应的函数值。
④单击计算器上的等号(=)按钮显示计算结果。
⑤在一个文本框中显示当前的计算过程,在一个文本区中显示以往的计算过程。
⑥单击“保存”按钮可以将文本区中显示的全部计算过程保存到文件:单击“复制”按钮可以将文本区中选中的文本复制到剪贴板单击“清除”技钮可以清除文本区中的全部内容。注意事项:
一.
总体包含11个Java源文件。Work.java ; ShuziButton.java ; SymbolButton.java ;
OperateNumber.java ; OperateSymbol.java ; OperateBack.java ; OperateClear.java ;OperateEquality.java ;OperateDot.java ;
OperateZhengFu.java ; OperateSin.java
二.各个源文件实现功能- Work.java负责计算器主窗口的创建。含有main方法。从该类开始执行。同样也负责(退格,=,归零,. ,+/-,sin)按钮创建。
- SymbolButton.java 负责(+,-,*,/)四个运算符号按钮的创建。
- ShuziButton.java 负责0-9数字按钮的创建。
- OperateNumber.java 负责用户点击数字(0-9)按钮时的事件处理。
- OperateSymbol.java 负责用户点击(+,-,*,/)按钮时的事件处理。
- OperateBack.java 负责用户点击(退格)按钮时的事件处理。
- OperatClear.java 负责用户点击(归零)按钮时的事件处理。
- OperateEquality 负责用户点击(=)按钮十五的事件处理。
- OperateDot.java 负责用户点击( . )按钮时的事件处理。
- OperateZhengFu.java 负责用户点击(+/-)按钮时的事件处理。
- OperateSin.java.java 负责用户点击(Sin)按钮时的事件处理。
三:涉及的知识点
12. 基本数据类型与数组。
13. 运算符,表达式和语句。
14. 类与对象。
15. 子类与继承。
16. 接口与实现。
17. 内部类与异常类。
18. 常用String类。
19. 组件及事件处理。
20. 输入与输出流。
21. Linked List类的基本用法。直接先看效果:
全部源文件都是放在 keshe这个包里面,直接用的话建这个包再复制源文件代码进去就行或者自己重新写 package代码用自己建的包名。
源码:
1.work.java
package keshe; import java.util.LinkedList; import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; public class Work extends JFrame implements ActionListener { JButton sin,Backspace,Equals,Zero,Flex,zhengfu; JButton saveButton,clearButton,copyButton; JTextField resultDisplay; //当前输入与运算结果显示。 JTextField processShow; // 当前计算过程显示。 JTextArea stepShow; //计算步骤显示。 LinkedList<String>list; //存放第一个数,操作符号与第二个数。 ShuziButton shuziButton[]; SymbolButton symbolButton[]; OperateNumber operateNumber; //处理ActionEvent事件。 OperateSymbol operateSymbol; OperateBack operateBack; OperateClear operateClear; OperateEquality operateEquality; OperateDot operateDot; OperateZhengFu operateZhengFu; OperateSin operateSin; public Work() { //构造方法 setTitle("五彩缤纷的计算——XXX"); setVisible(true); //窗口可见。 setBounds(120,60,600,300); //窗口的初始位置与长与宽; setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//点击关闭后结束窗口所在的应用程序。 JPanel panelZuo,panelYou; //面板 list=new LinkedList<String>(); resultDisplay=new JTextField(10); resultDisplay.setHorizontalAlignment(JTextField.RIGHT); //对齐方式 resultDisplay.setFont(new Font("TimesRoman",Font.BOLD,16));//字体样式,字体格式 ,字体大小 resultDisplay.setForeground(Color.green); //字体颜色 resultDisplay.setBackground(Color.white); //背景色 resultDisplay.setEditable(false); //选项不可用 resultDisplay.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));//显示半个边框 processShow=new JTextField(); processShow.setHorizontalAlignment(JTextField.CENTER); //对齐方式 processShow.setFont(new Font("Arial",Font.BOLD,16));//字体样式,字体格式 ,字体大小 processShow.setBackground(Color.green); processShow.setEditable(false); //选项不可用 stepShow=new JTextArea(); stepShow.setEditable(false); //选项不可用 stepShow.setFont(new Font("宋体",Font.PLAIN,16)); stepShow.setForeground(Color.blue); //字体颜色 shuziButton=new ShuziButton[10]; operateNumber = new OperateNumber(list,resultDisplay,processShow); for(int i=0;i<=9;i++) { shuziButton[i]=new ShuziButton(i); shuziButton[i].setFont(new Font("Arial",Font.BOLD,20)); //数字样式,格式,大小 shuziButton[i].addActionListener(operateNumber); //shuziButton将operateNumber注册为自己的监视器 } symbolButton=new SymbolButton[4]; operateSymbol=new OperateSymbol(list,resultDisplay,processShow,stepShow); String fuhao1[]= {"+","-","*","/"}; for(int i=0;i<4;i++) { symbolButton[i]=new SymbolButton(fuhao1[i]); symbolButton[i].setFont(new Font("Arial",Font.BOLD,20)); symbolButton[i].addActionListener(operateSymbol); //symbolButton将operateSymbol注册为自己的监视器 } Flex=new JButton("."); operateDot=new OperateDot(list,resultDisplay,processShow); Flex.addActionListener(operateDot); zhengfu=new JButton("+/-"); operateZhengFu=new OperateZhengFu(list,resultDisplay,processShow); zhengfu.addActionListener(operateZhengFu); Zero=new JButton("归零"); operateClear=new OperateClear(list,resultDisplay,processShow); Zero.addActionListener(operateClear); Backspace=new JButton("退格"); operateBack=new OperateBack(list,resultDisplay,processShow); Backspace.addActionListener(operateBack); Equals=new JButton("="); operateEquality=new OperateEquality(list,resultDisplay,processShow,stepShow); Equals.addActionListener(operateEquality); sin=new JButton("sin"); operateSin=new OperateSin(list,resultDisplay,processShow,stepShow); sin.addActionListener(operateSin); Zero.setForeground(Color.green); //颜色 Backspace.setForeground(Color.cyan); Equals.setForeground(Color.magenta); Flex.setForeground(Color.gray); zhengfu.setForeground(Color.red); sin.setForeground(Color.pink); panelZuo=new JPanel(); panelYou=new JPanel(); panelZuo.setLayout(new BorderLayout()); //panelZuo使用BorderLayout布局。 JPanel centerZuo=new JPanel(); //建一个放在panelZuo中间部分的centerZuo容器放数字与符号。 panelZuo.add(resultDisplay,BorderLayout.NORTH); //运算结果放在panelZuo容器的北边。 panelZuo.add(centerZuo,BorderLayout.CENTER); centerZuo.setLayout(new GridLayout(5,4)); //centerZuo使用GridLayout布局; centerZuo.add(symbolButton[0]); centerZuo.add(symbolButton[1]); centerZuo.add(symbolButton[2]); centerZuo.add(symbolButton[3]); centerZuo.add(shuziButton[1]); centerZuo.add(shuziButton[2]); centerZuo.add(shuziButton[3]); centerZuo.add(zhengfu); centerZuo.add(shuziButton[4]); centerZuo.add(shuziButton[5]); centerZuo.add(shuziButton[6]); centerZuo.add(sin); centerZuo.add(shuziButton[7]); centerZuo.add(shuziButton[8]); centerZuo.add(shuziButton[9]); centerZuo.add(Backspace); centerZuo.add(shuziButton[0]); centerZuo.add(Flex); centerZuo.add(Equals); centerZuo.add(Zero); panelYou.setLayout(new BorderLayout()); //panelYou使用BorderLayout布局。 panelYou.add(processShow,BorderLayout.NORTH); // 运算过程放在panelYou的北边. saveButton=new JButton("保存"); copyButton=new JButton("复制"); clearButton=new JButton("清除"); saveButton.setForeground(Color.blue); //颜色 copyButton.setForeground(Color.red); clearButton.setForeground(Color.gray); saveButton.setToolTipText("保存计算过程到文件里"); //设置鼠标停留在saveButton上时显示的信息; copyButton.setToolTipText("复制选中计算过程"); //设置鼠标停留在copyButton上时显示的信息; clearButton.setToolTipText("清除计算过程"); //设置鼠标停留在clearButton上时显示的信息; saveButton.addActionListener(this); clearButton.addActionListener(this); copyButton.addActionListener(this); panelYou.add(new JScrollPane(stepShow),BorderLayout.CENTER);//滚动窗格 JPanel southYou=new JPanel(); //建一个放在panelYou南边的southYou容器存放3个文字按钮。 southYou.add(saveButton); //放入按钮 southYou.add(copyButton); southYou.add(clearButton); panelYou.add(southYou,BorderLayout.SOUTH);//将southYou放在panelYou南边。 JSplitPane split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,panelZuo,panelYou);//界面一分为二; add(split,BorderLayout.CENTER); validate(); } public void actionPerformed(ActionEvent e) { if(e.getSource()==copyButton) { //如果按下复制按钮 stepShow.copy(); //实现复制 } if(e.getSource()==clearButton) { //如果按下清除按钮 stepShow.setText(null); //实现清除 } if(e.getSource()==saveButton){ //如果按下保存按钮 JFileChooser chooser=new JFileChooser(); //文件选择器 int state = chooser.showSaveDialog(null); //显示文件保存对话框 File file = chooser.getSelectedFile(); //输入要保存的文件名; if(file!=null&&state==JFileChooser.APPROVE_OPTION) { //若选好了文件. try { String baoCun=stepShow.getText(); //将运算步骤文本赋值给baoCun; StringReader read = new StringReader(baoCun); //生成字符流。 BufferedReader in=new BufferedReader(read); //生成缓冲输入流。 FileWriter out=new FileWriter(file); //根据选好的文件,生成FileWriter对象; BufferedWriter out1=new BufferedWriter(out); //生成缓冲输出流; String str=null; while((str=in.readLine())!=null) { //判断是否有字符 out1.write(str); //把内容写到文件中 out1.newLine(); //新的一行 } in.close(); //关闭文件; out1.close(); }catch(IOException el){ } } } } public static void main(String args[]) { new Work(); } }
2.OperateBack.java
package keshe; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.LinkedList; import javax.swing.JTextField; public class OperateBack implements ActionListener{ LinkedList<String> list; JTextField resultDisplay; //当前输入与运算结果显示 JTextField processShow; //显示当前计算过程 OperateBack(LinkedList<String> list1,JTextField one,JTextField two) { //构造方法 list=list1; resultDisplay=one; processShow=two; } public void actionPerformed(ActionEvent e) { if(list.size()==1) { String shu =(String) list.getFirst(); //获取第一个元素 if(shu.length()>=1) { //判断第一个运算数有几位数 shu=shu.substring(0,shu.length()-1); //提取字符串(不要最后一位数) list.set(0, shu); //替换 resultDisplay.setText(""+shu); processShow.setText(""+shu); }else { //只有一位数 list.removeLast(); //移除第一位数 resultDisplay.setText("0"); processShow.setText("0"); } }else if(list.size()==3) { String shu2 =(String) list.getLast(); //获取第二个运算数字 if(shu2.length()>=1) { //判断第一个运算数有几位数 shu2=shu2.substring(0,shu2.length()-1); //提取字符串(不要最后一位数) list.set(2, shu2); //替换 resultDisplay.setText(""+shu2); processShow.setText(""+shu2); }else { //只有一位数 list.removeLast(); //移除第二运算位数 resultDisplay.setText("0"); processShow.setText("0"); } } } }
3.OperateClear.java
package keshe; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.LinkedList; import javax.swing.JTextField; public class OperateClear implements ActionListener { LinkedList<String> list; JTextField resultDisplay; //当前输入与运算结果显示 JTextField processShow; //显示当前计算过程 OperateClear(LinkedList<String> list1,JTextField one,JTextField two) { //构造方法 list=list1; resultDisplay=one; processShow=two; } public void actionPerformed(ActionEvent e) { resultDisplay.setText("0"); list.clear(); //全部清除 processShow.setText(null); } }
4.OperateDot.java
package keshe; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.LinkedList; import javax.swing.JTextField; public class OperateDot implements ActionListener{ LinkedList<String> list; JTextField resultDisplay; //当前输入与运算结果显示 JTextField processShow; //显示当前计算过程 OperateDot(LinkedList<String> list1,JTextField one,JTextField two) { //构造方法 list=list1; resultDisplay=one; processShow=two; } public void actionPerformed(ActionEvent e) { String dot = e.getActionCommand(); //获取小数点 if(list.size()==1) { String a = list.getFirst(); //获取第一个元素 String b = null ; if(a.indexOf(dot)==-1) { //判断是否出现dot b=a.concat(dot); //把小数点拼接在数字后面 list.set(0, b); //替换 }else { b=a; } resultDisplay.setText(b); processShow.setText(""+list.get(0)); }else if (list.size()==3 ) { String a = list.getLast(); //获取第3个元素 String b = null ; if(a.indexOf(dot)==-1) { //判断是否出现dot b=a.concat(dot); //把小数点拼接在数字后面 list.set(2, b); //替换 }else { b=a; } resultDisplay.setText(b); processShow.setText(""+list.get(0)+""+list.get(1)+""+list.get(2)); } } }
5.OperateEquality.java
package keshe; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.LinkedList; import javax.swing.JTextField; import javax.swing.JTextArea; public class OperateEquality implements ActionListener{ LinkedList<String> list; JTextField resultDisplay; //当前输入与运算结果显示 JTextField processShow; //显示当前计算过程 JTextArea stepShow; // 显示计算步骤整体过程 OperateEquality(LinkedList<String> list1,JTextField one,JTextField two,JTextArea three) { //构造方法 list=list1; resultDisplay=one; processShow=two; stepShow=three; } public void actionPerformed(ActionEvent e) { if(list.size()==1) { String a = list.getFirst(); //获取第一个元素 resultDisplay.setText(a); processShow.setText(list.get(0)); } if(list.size()==2) { String a = list.getFirst(); //获取第一个元素 resultDisplay.setText(a); processShow.setText(list.get(0)); } else if(list.size()==3) { String a = list.getFirst(); //获取第一个元素 String b = list.get(1); //获取第二个元素 String c = list.getLast(); //获取最后一个元素 try { double d1 = Double.parseDouble(a); double d2 = Double.parseDouble(c); //数据类型转换 double result = 0; if(b.equals("+")) { result = d1 + d2 ; }else if(b.equals("-")) { result = d1 - d2; }else if(b.equals("*")) { result = d1*d2; }else if(b.equals("/")) { result = d1/d2; } String step = ""+a+""+b+""+c+"="+result; resultDisplay.setText(""+result); processShow.setText(step); stepShow.append(""+step+"\n"); list.set(0, ""+result); //将第一个元素为结果 list.removeLast(); //清除第二个运算数 list.removeLast(); //清除符号 }catch (Exception ee) { } } } }
6.OperateNumber.java
package keshe; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.LinkedList; import javax.swing.JTextField; public class OperateNumber implements ActionListener { LinkedList<String> list; JTextField resultDisplay; //当前输入与运算结果显示 JTextField processShow; //显示当前计算过程 OperateNumber(LinkedList<String> list1,JTextField one,JTextField two) { //构造方法 list=list1; resultDisplay=one; processShow=two; } public void actionPerformed(ActionEvent e) { ShuziButton s=(ShuziButton)e.getSource(); //获得点击的ShuziButton if(list.size()==0) { //如果链表个数为零 int number=s.getNumber(); list.add(""+number); //向list添加元素 resultDisplay.setText(""+number); //将resultDisplay对象上的文字设置成number }else if(list.size()==1) { int number=s.getNumber(); String a = list.getFirst(); //取得链表第一个元素 String b = a.concat(""+number); //字符串拼接。 list.set(0, b); //替换指定下标元素; resultDisplay.setText(b); processShow.setText(""+list.get(0)); //以上为储存输入的第一个运算数。 }else if(list.size()==2) { int number=s.getNumber(); list.add(""+number); //向列表添加新元素; resultDisplay.setText(""+number); processShow.setText(""+list.get(0)+""+list.get(1)+""+list.get(2)); }else if(list.size()==3) { int number=s.getNumber(); String a = list.getFirst(); //取得链表第三个元素 String b = a.concat(""+number); //字符串拼接。 list.set(2, b); //替换指定下标元素; resultDisplay.setText(b); processShow.setText(""+list.get(0)+""+list.get(1)+""+list.get(2)); //以上为储存输入的第二个运算数 } } }
7.OperateSin.java
package keshe; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.LinkedList; import javax.swing.JTextField; import javax.swing.JTextArea; public class OperateSin implements ActionListener{ LinkedList<String> list; JTextField resultDisplay; //当前输入与运算结果显示 JTextField processShow; //显示当前计算过程 JTextArea stepShow; // 显示计算步骤整体过程 OperateSin(LinkedList<String> list1,JTextField one,JTextField two,JTextArea three) { //构造方法 list=list1; resultDisplay=one; processShow=two; stepShow=three; } public void actionPerformed(ActionEvent e) { if(list.size()==1||list.size()==2) { String a = list.getFirst(); //获取第一个元素 try { double b = Double.parseDouble(a); //数据类型转换 double c = Math.sin(b); String d = String.valueOf(c) ; //数据类型转换 list.set(0, d); //替换第一个元素 String step = "sin("+a+")="+c; //整个过程 resultDisplay.setText(d); processShow.setText(step); stepShow.append(""+step+"\n"); }catch(Exception ee) { } }else if(list.size()==3) { String a = list.getLast(); //获取最后一个元素 try { double b = Double.parseDouble(a); //数据类型转换 double c = Math.sin(b); String d = String.valueOf(c) ; //数据类型转换 list.set(0, d); //替换第一个元素 String step = "sin("+a+")="+c; //整个过程 resultDisplay.setText(d); processShow.setText(step); stepShow.append(""+step+"\n"); list.removeLast(); //移掉第2个运算数 list.removeLast(); // 移掉运算符号 }catch(Exception ee) { } } } }
8.OperateSymbol.java
package keshe; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.LinkedList; import javax.swing.JTextArea; import javax.swing.JTextField; public class OperateSymbol implements ActionListener{ LinkedList<String> list; JTextField resultDisplay; //当前输入与运算结果显示 JTextField processShow; //显示当前计算过程 JTextArea stepShow; // 显示计算步骤整体过程 OperateSymbol(LinkedList<String> list1,JTextField one,JTextField two,JTextArea three) { //构造方法 list=list1; resultDisplay=one; processShow=two; stepShow=three; } public void actionPerformed(ActionEvent e) { SymbolButton a=(SymbolButton)e.getSource(); if(list.size()==1) { String fuhao = a.getFuHao1(); list.add(fuhao); //添加元素 processShow.setText(""+list.get(0)+""+list.get(1)); }else if(list.size()==2) { String fuhao = a.getFuHao1(); list.set(1, fuhao); //替换指定下标元素; processShow.setText(""+list.get(0)+""+list.get(1)); //以上为储存第一个运算符号 }else if(list.size()==3) { String num1 = list.getFirst(); //获取第一个数字 String num2 = list.getLast(); //获取第二个数字 String fuHao = list.get(1); // 获取运算符号 String processStep = num1+""+fuHao+""+num2; try { double n1 = Double.parseDouble(num1); //字符串转换数据 double n2 = Double.parseDouble(num2); double result = 0 ; if(fuHao.equals("+")) { result = n1+n2; }else if(fuHao.equals("-")) { result = n1-n2; }else if(fuHao.equals("*")) { result = n1*n2; }else if(fuHao.equals("/")) { result = n1/n2; } String fuhao = a.getFuHao1(); list.clear(); //清除 list.add(""+result); //把计算结果换成第一个运算数 list.add(fuhao); String step = processStep+"="+""+list.get(1); resultDisplay.setText(""+result); processShow.setText(step); stepShow.append(""+processStep+"="+result+"\n"); }catch(Exception ee) { } } } }
9.OperateZhengFu.java
package keshe; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.LinkedList; import javax.swing.JTextField; public class OperateZhengFu implements ActionListener{ LinkedList<String> list; JTextField resultDisplay; //当前输入与运算结果显示 JTextField processShow; //显示当前计算过程 OperateZhengFu(LinkedList<String> list1,JTextField one,JTextField two) { //构造方法 list=list1; resultDisplay=one; processShow=two; } public void actionPerformed(ActionEvent e) { if(list.size()==1) { String a = list.getFirst(); // 获取第一个元素; try { double b = Double.parseDouble(a); //数据类型转换; b=-1*b; //换成异号 String c = String.valueOf(b); //数据类型又换成Sring型 list.set(0, c); resultDisplay.setText(c); processShow.setText(""+list.get(0)); }catch(Exception ee) { } }else if(list.size()==3) { String a = list.getFirst(); // 获取第一个元素; try { double b = Double.parseDouble(a); //数据类型转换; b=-1*b; //换成异号 String c = String.valueOf(b); //数据类型又换成Sring型 list.set(2, c); resultDisplay.setText(c); processShow.setText(""+list.get(0)+""+list.get(1)+""+list.get(2)); }catch(Exception ee) { } } } }
10.ShuziButton.java
package keshe; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ShuziButton extends JButton{ int number; public ShuziButton(int number) { super(""+number); this.number=number; setForeground(Color.orange); } public int getNumber() { return number; //返回数字。 } }
11.SymbolButton.java
package keshe; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class SymbolButton extends JButton { String fuHao1; public SymbolButton(String s) { super(s); fuHao1=s; setForeground(Color.blue); } public String getFuHao1() { return fuHao1; // 返回符号 } }
总结
全部源码就上面全部了,写完的话高分可能拿不到,但是过是没问题的。有要UML图的可以留言~~
要UML图的可以私信我,发邮箱。急的也可以去这下载:https://download.csdn.net/download/luo1831251387/15770017
-
在html里面写java代码
2021-06-09 03:35:22在html里面写java代码[2021-02-09 11:02:31]简介:php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace("/(\s|\ \;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。... -
java游戏项目分享,适合的零基础java项目,提高你的代码能力
2021-08-12 10:53:32适合准备入行开发的零基础员学习Java,基于最新JDK13、IDEA平台讲解的,视频中穿插多个实战项目。每一个知识点都讲解的通俗易懂,由浅入深。不仅适用于零基础的初学者,有经验的程序员也可做巩固学习。 一、坦克... -
java新手入门-java新手代码大全
2021-02-12 11:18:00关于学习java知识的过程是漫长的,它的内容丰富又庞大。今天就为大家介绍如何区分java文件字节流和字符流,以及为大家展示读写操作的实例。 下面要给大家介绍的就是和java字符缓冲区输入流BufferedReader类相关的... -
Java贪吃蛇全代码
2021-04-26 10:53:56用Java编写精典小游戏——贪吃蛇! 前言 我想贪吃蛇应该是不少90后和00后的童年(我本人是01年的),回想起从前偷偷拿着我爹的诺基亚在被窝里玩贪吃蛇,不禁感慨万分,时间飞逝,没想到10年后的我也可以自己做一... -
Java代码写好后怎么运行?
2021-09-15 10:06:15对于很多Java初学者来说,编写好自己的第一个程序能够运行起来是一件非常自豪的事情,那么你知道应该如何才能运行Java代码吗?今天小千就来给大家介绍一下。 Java代码运行方法 1.首先需要确保你的电脑正确安装了Java... -
JavaParser:Java代码生成
2021-03-10 03:48:19生成Java代码JavaParser。我在javaparser.org或手册中找不到关于代码生成的大量文档。因此,我认为将其解决将有助于想要尝试使用Java解析器的人。在最简单的形式中, JavaParser 库允许您与Java源代码交互,作为Java... -
[ 代码审计篇 ] Java web 代码审计 详解(一)
2021-12-24 18:41:10Java web 的代码审计 第一篇 Java web 的代码审计 思路 -
Java五子棋全代码
2020-10-14 13:27:50用Java编写简单的五子棋 前言 这两天在空闲时间做了个五子棋项目,分享给大家看一下,界面是这样的: 呜呜呜,界面很丑我知道,本人虽有几年PS基础,但知识浅薄,审美观不尽人意,做到如此实属极限... -
分享四个Java低代码快速开发平台贼好用, 私活毕设神器
2020-12-23 17:53:45OPSLI 快速开发平台基于springboot、vue、element-ui 、vue-admin-beautiful,项目采用前后端分离架构,热插拔式业务模块与插件扩展性高 ,代码简洁,功能丰富,开箱即用 官网: https://opsli.com 开源地址: ... -
黑客帝国里的代码雨-java代码实现
2018-12-02 11:09:47我一直很好奇黑客帝国里的代码雨,感觉很酷,就一直搜集资料,尝试使用Java来实现,终于成功了,分享一下啊 代码雨的实现用到的是jdk自身带的类库,可能很多小伙伴不知道Java安装JDK就可以做C/S(客户/服务器)... -
Java代码审计之URL重定向
2022-03-25 22:00:33Java代码审计之URL重定向url重定向URLRedirect url重定向漏洞也称url任意跳转漏洞,网站信任了用户的输入导致恶意https://mp.weixin.qq.com/s?__biz=MzI1ODY3MTA3Nw==&mid=2247484100&idx=1&sn=50473ea6... -
java代码实现网页源码爬取
2020-12-14 15:42:21java代码实现网页源码爬取 java代码基于Eclipse简单实现网页源码爬取 哈哈,大家好!我是yanxiaolxy,前天四级英语考试考完了,作业也不多了,感觉整个人都变得轻松了许多。 今天给大家分享我的最新java学习进程--java... -
Java 静态代码块详解
2020-05-31 11:22:14静态代码块及多种代码块的相关知识 -
java浪漫代码_30条代码,拿去“表白”
2020-10-22 00:06:14作者 | 程序员客栈来源 |...其实很多时候礼物不一定就需要花钱买,今天我们就用代码来一次表白吧,把你中意的代码发给她,看她能不能看懂,哈哈哈!而它们不是一般的代码,它们是文化... -
java必背代码入门有哪些?如何写出优质代码?
2021-01-14 01:57:25学习java还是要不断的积累,有必要的话,还是需要大家记忆的,这样更加有利于大家学习java,那么今天我们就给大家分享一些java入门必背代码,希望能够对大家有用!1、把 Java util.Date 转成 sql.Datejava.util.... -
Java代码转C++代码的几点小经验
2020-12-04 21:44:53C++ 和 Java太像了,其实翻译起来 还挺爽快,但有些小坑 知道了可能更好 -
java表白代码,能否get到程序员的浪漫?
2021-02-12 11:29:42程序猿如何循序渐进地追到女生?突发奇想,想知道群里那些内向闷骚的单身程序员们,是不是真的不会向女生表达。...最近看到一则Java程序员的表白情书,觉得特别有意思,决定分享给大家,毕竟独乐乐不如众乐乐。程序员... -
java学生信息管理系统源代码
2021-03-04 02:18:22导读正文本文实例为大家分享了java学生信息管理系统的具体代码,实现学生信息: 增加 int[] a=new int[9] 、删除 、查找、更改,供大家参考,具体内容如下/*学生信息管理系统,实现学生信息:*增加 int[] a=new int... -
Java代码实现读取resource文件(Springboot项目-案例详解)
2021-05-31 20:24:02博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!... -
jmeter运行java代码、操作变量
2019-05-11 11:47:10jmeter运行java代码、操作变量 针对jmeter对于需要额外java函数或者类调用时,可以参考本文章(比如post需要算法加密密码时,则可以让开发导出相关类,进行调用返回即可。或者需要针对某些参数进行运算,也可以实现... -
java如何实现超市管理系统 java实现超市管理系统代码示例
2021-03-06 04:29:28本篇文章小编给大家分享一下java实现超市管理系统代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。实现功能使用选择结构,循环结构,数组的知识实现一个... -
用java写一个用户登陆界面的代码分享
2018-03-14 23:02:43Java用户登陆这块,主要还是学到了新的类:1,边界布局:BorderLayout。他主要分为五个布局,是JFrame(顶层容器),JDialog(创建对话框窗口的类)的默认布局方式。其最多容量为5个组件,超出5个得用其他的。设置... -
java代码怎么连接数据库,超详细教程
2020-06-02 08:04:13java连接数据库jdbc 在连接数库时我们先要将驱动导入idea 详情看以下图片:在idea中将数据库的驱动引进idea 首先我们点击idea左上角的file–... -
细数常用的5款Java代码混淆器!
2020-02-06 16:18:05对于Java程序员来说,如果辛辛苦苦写的代码被人摽窃走,将是一件非常恼火的事情。...下面,分享5个常用Java代码混淆器,帮助你保护你的代码。 1、Zelix KlassMaster Zelix KlassMaster是一款用Java写的实用工具,能... -
java 如何去看懂一段代码?
2020-04-19 12:17:10java day006 一周小结以及如何去看懂一段代码 [外链图片转存 如何去看懂一段代码? 作为初学者,如何去看懂一段代码所表达的意思呢?其实很简单,三个步骤就好了。 1 :流程 如果你要想看懂一段代码,首先你需要直到...