有很多书可以教你如何用Java编写代码。它们有助于回顾、参考,并为你提供语言概述。如果你是初学者,最好先复习这本书,确保它符合你的学习风格。
在线学习Java
与书本相比,在线学习Java有很多好处:从阅读课程到编写代码更容易,尤其是与实体书相比。如果你选择的课程包含视频教程,则这些课程将引导你完成编码过程,你可以在需要时暂停和回放。除了在线学习,你也可以参加线下的Java培训班,专业讲师指导,系统规范化的课程,让学习更科学,更有效。
importjava.awt.Canvas;
importjava.awt.Color;
importjava.awt.Dimension;
importjava.awt.EventQueue;
importjava.awt.Frame;
importjava.awt.Graphics;
importjava.awt.Graphics2D;
importjava.awt.Image;
importjava.awt.RenderingHints;
importjava.awt.event.KeyEvent;
importjava.awt.event.KeyListener;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjava.awt.image.BufferedImage;
importjava.io.File;
importjava.io.IOException;
importjavax.imageio.ImageIO;
publicclassTestImageextendsFrame
{
privatestaticfinallongserialVersionUID=1L;
privatestaticbooleanPRESSED=false;
privatestaticintpointX=0;
privatestaticintpointy=200;
privatestaticintRIGHT_GO=0;
privatestaticintLEFT_GO=0;
privatestaticintDIR=0;
privatestaticintANGLE=0;
privatestaticintW=50;
privatestaticintH=60;
private_Canvascanvas=null;
publicTestImage()
add(canvas=new_Canvas());
setIgnoreRepaint(true);
requestFocus();
}
publicclass_CanvasextendsCanvasimplementsRunnable
privateBufferedImagebi=null;
privateImagebufferedImage=null;
privateThreadthread=null;
privatelongsleepTime=10;
public_Canvas()
try
bi=ImageIO.read(newFile("go.png"));
catch(IOExceptione)
{}
setBackground(Color.BLACK);
addKeyListener(newKeyListener()
@Override
publicvoidkeyTyped(KeyEvente)
publicvoidkeyReleased(KeyEvente)
RIGHT_GO=0;
PRESSED=false;
publicvoidkeyPressed(KeyEvente)
//38403739上下左右
DIR=e.getKeyCode();
PRESSED=true;
});
publicvoidpaint(Graphicsg)
Graphics2Dg2d=(Graphics2D)g;
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2d.drawImage(rotateImage(bi.getSubimage(RIGHT_GO,LEFT_GO,W,H),ANGLE,true),pointX,pointy,W,H,
this);
g2d.dispose();
publicvoidupdate(Graphicsg)
if(null==bufferedImage)
bufferedImage=createImage(getWidth(),getHeight());
GraphicsbufferedG=bufferedImage.getGraphics();
bufferedG.clearRect(0,0,getWidth(),getHeight());
paint(bufferedG);
bufferedG.dispose();
g.drawImage(bufferedImage,0,0,this);
g.dispose();
publicvoidstart()
thread=newThread(this);
thread.setName("TestImage");
thread.setPriority(Thread.MIN_PRIORITY);
thread.start();
publicsynchronizedvoidstop()
thread=null;
notify();
publicvoidrun()
Threadme=Thread.currentThread();
while(thread==me!isShowing()||getSize().width==0)
Thread.sleep(555);
catch(InterruptedExceptione)
return;
while(thread==meisShowing())
if(PRESSED)
if(DIR==39)
RIGHT_GO=RIGHT_GO+50;
LEFT_GO=0;
pointX=pointX+1;
if(pointX420)
ANGLE=90;
pointX--;
pointy--;
W=60;
H=50;
if(RIGHT_GO50)
elseif(DIR==37)
pointX=pointX-1;
LEFT_GO=60;
if(pointX0)
ANGLE=-90;
pointX++;
elseif(DIR==38)
W=50;
H=60;
pointy=150;
ANGLE=0;
RIGHT_GO=100;
elseif(DIR==40)
pointy=200;
Thread.sleep(sleepTime);
repaint();
break;
else
if(pointX500)
pointX=0;
/**
*旋转图像为指定角度
*
*@paramdegree
*@return
*/
publicstaticBufferedImagerotateImage(finalBufferedImageimage,finalintangdeg,finalbooleand)
intw=image.getWidth();
inth=image.getHeight();
inttype=image.getColorModel().getTransparency();
BufferedImageimg;
Graphics2Dgraphics2d;
(graphics2d=(img=newBufferedImage(w,h,type)).createGraphics()).setRenderingHint(
RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2d.rotate(d-Math.toRadians(angdeg):Math.toRadians(angdeg),w/2,h/2);
graphics2d.drawImage(image,0,0,null);
graphics2d.dispose();
returnimg;
publicstaticvoidmain(String[]args)
EventQueue.invokeLater(newRunnable()
finalTestImageti=newTestImage();
ti.setSize(newDimension(500,300));
ti.setLocationRelativeTo(null);
ti.addWindowListener(newWindowAdapter()
publicvoidwindowClosing(WindowEvente)
System.exit(0);
publicvoidwindowDeiconified(WindowEvente)
ti.canvas.start();
publicvoidwindowIconified(WindowEvente)
ti.canvas.stop();
ti.setResizable(false);
ti.setVisible(true);
Java程序员必须收藏的资源大全
古董级工具
这些工具伴随着Java一起出现,在各自辉煌之后还在一直使用。
ApacheAnt:基于XML的构建管理工具。
cglib:字节码生成库。
GlassFish:应用服务器,由Oracle赞助支持的JavaEE参考实现。
Hudson:持续集成服务器,目前仍在活跃开发。
JavaServerFaces:Mojarra是JSF标准的一个开源实现,由Oracle开发。
JavaServerPages:支持自定义标签库的网站通用模板库。
Liquibase:与具体数据库独立的追踪、管理和应用数据库Scheme变化的工具。
2.构建工具
构建及应用依赖关系处理工具。
Bazel:来自Google的构建工具,可以快速、可靠地构建代码。
Gradle:使用Groovy(非XML)进行增量构建,可以很好地与Maven依赖管理配合工作。