1. 程式人生 > >Java 學習筆記之jfreechart 生成折線圖,餅圖,

Java 學習筆記之jfreechart 生成折線圖,餅圖,

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               
package com.yyh.jfreechart;import java.awt.Color;import java.awt.Font;import java.io.File;import java.io.FileOutputStream;import
java.text.DecimalFormat;import java.text.NumberFormat;import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartUtilities;import org.jfree.chart.JFreeChart;import org.jfree.chart.axis.CategoryAxis;import org.jfree.chart.axis.CategoryLabelPositions;import org.jfree.chart.axis.NumberAxis;import
org.jfree.chart.axis.ValueAxis;import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;import org.jfree.chart.labels.StandardPieSectionLabelGenerator;import org.jfree.chart.plot.CategoryPlot;import org.jfree.chart.plot.PiePlot3D;import org.jfree.chart.plot.PlotOrientation;import org.jfree.chart.renderer.category.BarRenderer;import
org.jfree.chart.renderer.category.LineAndShapeRenderer;import org.jfree.chart.renderer.category.StackedBarRenderer;import org.jfree.chart.title.TextTitle;import org.jfree.data.category.CategoryDataset;import org.jfree.data.general.DatasetUtilities;import org.jfree.data.general.DefaultPieDataset;import org.jfree.data.general.PieDataset;/** * 實際取色的時候一定要16位的,這樣比較準確 *  * @author new */public class CreateChartServiceImpl {    private static final String CHART_PATH = "E:/test/";    public static void main(String[] args) {        // TODO Auto-generated method stub        CreateChartServiceImpl pm = new CreateChartServiceImpl();        // 生成餅狀圖        pm.makePieChart();        // 生成單組柱狀圖        pm.makeBarChart();        // 生成多組柱狀圖        pm.makeBarGroupChart();        // 生成堆積柱狀圖        pm.makeStackedBarChart();        // 生成折線圖        pm.makeLineAndShapeChart();    }    /**     * 生成折線圖     */    public void makeLineAndShapeChart() {        double[][] data = new double[][]{            {672, 766, 223, 540, 126},            {325, 521, 210, 340, 106},            {332, 256, 523, 240, 526}        };        String[] rowKeys = {"蘋果", "梨子", "葡萄"};        String[] columnKeys = {"北京", "上海", "廣州", "成都", "深圳"};        CategoryDataset dataset = getBarData(data, rowKeys, columnKeys);        createTimeXYChar("折線圖", "x軸", "y軸", dataset, "lineAndShap.png");    }    /**     * 生成分組的柱狀圖     */    public void makeBarGroupChart() {        double[][] data = new double[][]{            {672, 766, 223, 540, 126},            {325, 521, 210, 340, 106},            {332, 256, 523, 240, 526}        };        String[] rowKeys = {"蘋果", "梨子", "葡萄"};        String[] columnKeys = {"北京", "上海", "廣州", "成都", "深圳"};        CategoryDataset dataset = getBarData(data, rowKeys, columnKeys);        createBarChart(dataset, "x座標", "y座標", "柱狀圖", "barGroup.png");    }    /**     * 生成柱狀圖     */    public void makeBarChart() {        double[][] data = new double[][]{            {672, 766, 223, 540, 126}        };        String[] rowKeys = {"蘋果"};        String[] columnKeys = {"北京", "上海", "廣州", "成都", "深圳"};        CategoryDataset dataset = getBarData(data, rowKeys, columnKeys);        createBarChart(dataset, "x座標", "y座標", "柱狀圖", "bar.png");    }    /**     * 生成堆疊柱狀圖     */    public void makeStackedBarChart() {        double[][] data = new double[][]{            {0.21, 0.66, 0.23, 0.40, 0.26},            {0.25, 0.21, 0.10, 0.40, 0.16}        };        String[] rowKeys = {"蘋果", "梨子"};        String[] columnKeys = {"北京", "上海", "廣州", "成都", "深圳"};        CategoryDataset dataset = getBarData(data, rowKeys, columnKeys);        createStackedBarChart(dataset, "x座標", "y座標", "柱狀圖", "stsckedBar.png");    }    /**     * 生成餅狀圖     */    public void makePieChart() {        double[] data = {9, 91};        String[] keys = {"失敗率", "成功率"};        createValidityComparePimChar(getDataPieSetByUtil(data, keys), "餅狀圖",                "pie2.png", keys);    }    // 柱狀圖,折線圖 資料集    public CategoryDataset getBarData(double[][] data, String[] rowKeys,            String[] columnKeys) {        return DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);    }    // 餅狀圖 資料集    public PieDataset getDataPieSetByUtil(double[] data,            String[] datadescription) {        if (data != null && datadescription != null) {            if (data.length == datadescription.length) {                DefaultPieDataset dataset = new DefaultPieDataset();                for (int i = 0; i < data.length; i++) {                    dataset.setValue(datadescription[i], data[i]);                }                return dataset;            }        }        return null;    }    /**     * 柱狀圖     *      *@param dataset 資料集     * @param xName x軸的說明(如種類,時間等)     * @param yName y軸的說明(如速度,時間等)     * @param chartTitle 圖示題     * @param charName 生成圖片的名字     * @return     */    public String createBarChart(CategoryDataset dataset, String xName,            String yName, String chartTitle, String charName) {        JFreeChart chart = ChartFactory.createBarChart(chartTitle, // 圖表標題                xName, // 目錄軸的顯示標籤                yName, // 數值軸的顯示標籤                dataset, // 資料集                PlotOrientation.VERTICAL, // 圖表方向:水平、垂直                true, // 是否顯示圖例(對於簡單的柱狀圖必須是false)                false, // 是否生成工具                false // 是否生成URL連結                );        Font labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12);        /*         * VALUE_TEXT_ANTIALIAS_OFF表示將文字的抗鋸齒關閉,         * 使用的關閉抗鋸齒後,字型儘量選擇12到14號的宋體字,這樣文字最清晰好看         */        // chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);        chart.setTextAntiAlias(false);        chart.setBackgroundPaint(Color.white);        // create plot        CategoryPlot plot = chart.getCategoryPlot();        // 設定橫虛線可見        plot.setRangeGridlinesVisible(true);        // 虛線色彩        plot.setRangeGridlinePaint(Color.gray);        // 資料軸精度        NumberAxis vn = (NumberAxis) plot.getRangeAxis();        // vn.setAutoRangeIncludesZero(true);        DecimalFormat df = new DecimalFormat("#0.00");        vn.setNumberFormatOverride(df); // 資料軸資料標籤的顯示格式        // x軸設定        CategoryAxis domainAxis = plot.getDomainAxis();        domainAxis.setLabelFont(labelFont);// 軸標題        domainAxis.setTickLabelFont(labelFont);// 軸數值        // Lable(Math.PI/3.0)度傾斜        // domainAxis.setCategoryLabelPositions(CategoryLabelPositions        // .createUpRotationLabelPositions(Math.PI / 3.0));        domainAxis.setMaximumCategoryLabelWidthRatio(0.6f);// 橫軸上的 Lable 是否完整顯示        // 設定距離圖片左端距離        domainAxis.setLowerMargin(0.1);        // 設定距離圖片右端距離        domainAxis.setUpperMargin(0.1);        // 設定 columnKey 是否間隔顯示        // domainAxis.setSkipCategoryLabelsToFit(true);        plot.setDomainAxis(domainAxis);        // 設定柱圖背景色(注意,系統取色的時候要使用16位的模式來檢視顏色編碼,這樣比較準確)        plot.setBackgroundPaint(new Color(255, 255, 204));        // y軸設定        ValueAxis rangeAxis = plot.getRangeAxis();        rangeAxis.setLabelFont(labelFont);        rangeAxis.setTickLabelFont(labelFont);        // 設定最高的一個 Item 與圖片頂端的距離        rangeAxis.setUpperMargin(0.15);        // 設定最低的一個 Item 與圖片底端的距離        rangeAxis.setLowerMargin(0.15);        plot.setRangeAxis(rangeAxis);        BarRenderer renderer = new BarRenderer();        // 設定柱子寬度        renderer.setMaximumBarWidth(0.05);        // 設定柱子高度        renderer.setMinimumBarLength(0.2);        // 設定柱子邊框顏色        renderer.setBaseOutlinePaint(Color.BLACK);        // 設定柱子邊框可見        renderer.setDrawBarOutline(true);        // // 設定柱的顏色        renderer.setSeriesPaint(0, new Color(204, 255, 255));        renderer.setSeriesPaint(1, new Color(153, 204, 255));        renderer.setSeriesPaint(2, new Color(51, 204, 204));        // 設定每個地區所包含的平行柱的之間距離        renderer.setItemMargin(0.0);        // 顯示每個柱的數值,並修改該數值的字型屬性        renderer.setIncludeBaseInRange(true);        renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());        renderer.setBaseItemLabelsVisible(true);        plot.setRenderer(renderer);        // 設定柱的透明度        plot.setForegroundAlpha(1.0f);        FileOutputStream fos_jpg = null;        try {            isChartPathExist(CHART_PATH);            String chartName = CHART_PATH + charName;            fos_jpg = new FileOutputStream(chartName);            ChartUtilities.writeChartAsPNG(fos_jpg, chart, 500, 500, true, 10);            return chartName;        } catch (Exception e) {            e.printStackTrace();            return null;        } finally {            try {                fos_jpg.close();            } catch (Exception e) {                e.printStackTrace();            }        }    }    /**     * 橫向圖     *      * @param dataset 資料集     * @param xName x軸的說明(如種類,時間等)     * @param yName y軸的說明(如速度,時間等)     * @param chartTitle 圖示題     * @param charName 生成圖片的名字     * @return     */    public String createHorizontalBarChart(CategoryDataset dataset,            String xName, String yName, String chartTitle, String charName) {        JFreeChart chart = ChartFactory.createBarChart(chartTitle, // 圖表標題                xName, // 目錄軸的顯示標籤                yName, // 數值軸的顯示標籤                dataset, // 資料集                PlotOrientation.VERTICAL, // 圖表方向:水平、垂直                true, // 是否顯示圖例(對於簡單的柱狀圖必須是false)                false, // 是否生成工具                false // 是否生成URL連結                );        CategoryPlot plot = chart.getCategoryPlot();        // 資料軸精度        NumberAxis vn = (NumberAxis) plot.getRangeAxis();        //設定刻度必須從0開始        // vn.setAutoRangeIncludesZero(true);        DecimalFormat df = new DecimalFormat("#0.00");        vn.setNumberFormatOverride(df); // 資料軸資料標籤的顯示格式        CategoryAxis domainAxis = plot.getDomainAxis();        domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 橫軸上的        // Lable        Font labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12);        domainAxis.setLabelFont(labelFont);// 軸標題        domainAxis.setTickLabelFont(labelFont);// 軸數值        domainAxis.setMaximumCategoryLabelWidthRatio(0.8f);// 橫軸上的 Lable 是否完整顯示        // domainAxis.setVerticalCategoryLabels(false);        plot.setDomainAxis(domainAxis);        ValueAxis rangeAxis = plot.getRangeAxis();        // 設定最高的一個 Item 與圖片頂端的距離        rangeAxis.setUpperMargin(0.15);        // 設定最低的一個 Item 與圖片底端的距離        rangeAxis.setLowerMargin(0.15);        plot.setRangeAxis(rangeAxis);        BarRenderer renderer = new BarRenderer();        // 設定柱子寬度        renderer.setMaximumBarWidth(0.03);        // 設定柱子高度        renderer.setMinimumBarLength(30);        renderer.setBaseOutlinePaint(Color.BLACK);        // 設定柱的顏色        renderer.setSeriesPaint(0, Color.GREEN);        renderer.setSeriesPaint(1, new Color(0, 0, 255));        // 設定每個地區所包含的平行柱的之間距離        renderer.setItemMargin(0.5);        // 顯示每個柱的數值,並修改該數值的字型屬性        renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());        // 設定柱的數值可見        renderer.setBaseItemLabelsVisible(true);        plot.setRenderer(renderer);        // 設定柱的透明度        plot.setForegroundAlpha(0.6f);        FileOutputStream fos_jpg = null;        try {            isChartPathExist(CHART_PATH);            String chartName = CHART_PATH + charName;            fos_jpg = new FileOutputStream(chartName);            ChartUtilities.writeChartAsPNG(fos_jpg, chart, 500, 500, true, 10);            return chartName;        } catch (Exception e) {            e.printStackTrace();            return null;        } finally {            try {                fos_jpg.close();            } catch (Exception e) {                e.printStackTrace();            }        }    }    /**     * 餅狀圖     *      * @param dataset 資料集     * @param chartTitle 圖示題     * @param charName 生成圖的名字     * @param pieKeys 分餅的名字集     * @return     */    public String createValidityComparePimChar(PieDataset dataset,            String chartTitle, String charName, String[] pieKeys) {        JFreeChart chart = ChartFactory.createPieChart3D(chartTitle, // chart                // title                dataset,// data                true,// include legend                true, false);        // 使下說明標籤字型清晰,去鋸齒類似於        // chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);的效果        chart.setTextAntiAlias(false);        // 圖片背景色        chart.setBackgroundPaint(Color.white);        // 設定圖示題的字型重新設定title        Font font = new Font("隸書", Font.BOLD, 25);        TextTitle title = new TextTitle(chartTitle);        title.setFont(font);        chart.setTitle(title);        PiePlot3D plot = (PiePlot3D) chart.getPlot();        // 圖片中顯示百分比:預設方式        // 指定餅圖輪廓線的顏色        // plot.setBaseSectionOutlinePaint(Color.BLACK);        // plot.setBaseSectionPaint(Color.BLACK);        // 設定無資料時的資訊        plot.setNoDataMessage("無對應的資料,請重新查詢。");        // 設定無資料時的資訊顯示顏色        plot.setNoDataMessagePaint(Color.red);        // 圖片中顯示百分比:自定義方式,{0} 表示選項, {1} 表示數值, {2} 表示所佔比例 ,小數點後兩位        plot.setLabelGenerator(new StandardPieSectionLabelGenerator(                "{0}={1}({2})", NumberFormat.getNumberInstance(),                new DecimalFormat("0.00%")));        // 圖例顯示百分比:自定義方式, {0} 表示選項, {1} 表示數值, {2} 表示所佔比例        plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator(                "{0}={1}({2})"));        plot.setLabelFont(new Font("SansSerif", Font.TRUETYPE_FONT, 12));        // 指定圖片的透明度(0.0-1.0)        plot.setForegroundAlpha(0.65f);        // 指定顯示的餅圖上圓形(false)還橢圓形(true)        plot.setCircular(false, true);        // 設定第一個 餅塊section 的開始位置,預設是12點鐘方向        plot.setStartAngle(90);        // // 設定分餅顏色        plot.setSectionPaint(pieKeys[0], new Color(244, 194, 144));        plot.setSectionPaint(pieKeys[1], new Color(144, 233, 144));        FileOutputStream fos_jpg = null;        try {            // 資料夾不存在則建立            isChartPathExist(CHART_PATH);            String chartName = CHART_PATH + charName;            fos_jpg = new FileOutputStream(chartName);            // 高寬的設定影響橢圓餅圖的形狀            ChartUtilities.writeChartAsPNG(fos_jpg, chart, 500, 230);            return chartName;        } catch (Exception e) {            e.printStackTrace();            return null;        } finally {            try {                fos_jpg.close();                System.out.println("create pie-chart.");            } catch (Exception e) {                e.printStackTrace();            }        }    }    /**     * 判斷資料夾是否存在,如果不存在則新建     * @param chartPath     */    private void isChartPathExist(String chartPath) {        File file = new File(chartPath);        if (!file.exists()) {            file.mkdirs();        // log.info("CHART_PATH="+CHART_PATH+"create.");        }    }    /**     * 折線圖     *      * @param chartTitle     * @param x     * @param y     * @param xyDataset     * @param charName     * @return     */    public String createTimeXYChar(String chartTitle, String x, String y,            CategoryDataset xyDataset, String charName) {        JFreeChart chart = ChartFactory.createLineChart(chartTitle, x, y,                xyDataset, PlotOrientation.VERTICAL, true, true, false);        chart.setTextAntiAlias(false);        chart.setBackgroundPaint(Color.WHITE);        // 設定圖示題的字型重新設定title        Font font = new Font("隸書", Font.BOLD, 25);        TextTitle title = new TextTitle(chartTitle);        title.setFont(font);        chart.setTitle(title);        // 設定面板字型        Font labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12);        chart.setBackgroundPaint(Color.WHITE);        CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();        // x軸 // 分類軸網格是否可見        categoryplot.setDomainGridlinesVisible(true);        // y軸 //資料軸網格是否可見        categoryplot.setRangeGridlinesVisible(true);        categoryplot.setRangeGridlinePaint(Color.WHITE);// 虛線色彩        categoryplot.setDomainGridlinePaint(Color.WHITE);// 虛線色彩        categoryplot.setBackgroundPaint(Color.lightGray);        // 設定軸和麵板之間的距離        // categoryplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D));        CategoryAxis domainAxis = categoryplot.getDomainAxis();        domainAxis.setLabelFont(labelFont);// 軸標題        domainAxis.setTickLabelFont(labelFont);// 軸數值        domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 橫軸上的        // Lable        // 45度傾斜        // 設定距離圖片左端距離        domainAxis.setLowerMargin(0.0);        // 設定距離圖片右端距離        domainAxis.setUpperMargin(0.0);        NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();        numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());        numberaxis.setAutoRangeIncludesZero(true);        // 獲得renderer 注意這裡是下嗍造型到lineandshaperenderer!!        LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer) categoryplot.getRenderer();        lineandshaperenderer.setBaseShapesVisible(true); // series 點(即資料點)可見        lineandshaperenderer.setBaseLinesVisible(true); // series 點(即資料點)間有連線可見        // 顯示折點資料        // lineandshaperenderer.setBaseItemLabelGenerator(new        // StandardCategoryItemLabelGenerator());        // lineandshaperenderer.setBaseItemLabelsVisible(true);        FileOutputStream fos_jpg = null;        try {            isChartPathExist(CHART_PATH);            String chartName = CHART_PATH + charName;            fos_jpg = new FileOutputStream(chartName);            // 將報表儲存為png檔案            ChartUtilities.writeChartAsPNG(fos_jpg, chart, 500, 510);            return chartName;        } catch (Exception e) {            e.printStackTrace();            return null;        } finally {            try {                fos_jpg.close();                System.out.println("create time-createTimeXYChar.");            } catch (Exception e) {                e.printStackTrace();            }        }    }    /**     * 堆疊柱狀圖     *      * @param dataset     * @param xName     * @param yName     * @param chartTitle     * @param charName     * @return     */    public String createStackedBarChart(CategoryDataset dataset, String xName,            String yName, String chartTitle, String charName) {        // 1:得到 CategoryDataset        // 2:JFreeChart物件        JFreeChart chart = ChartFactory.createStackedBarChart(chartTitle, // 圖表標題                xName, // 目錄軸的顯示標籤                yName, // 數值軸的顯示標籤                dataset, // 資料集                PlotOrientation.VERTICAL, // 圖表方向:水平、垂直                true, // 是否顯示圖例(對於簡單的柱狀圖必須是false)                false, // 是否生成工具                false // 是否生成URL連結                );        // 圖例字型清晰        chart.setTextAntiAlias(false);        chart.setBackgroundPaint(Color.WHITE);        // 2 .2 主標題物件 主標題物件是 TextTitle 型別        chart.setTitle(new TextTitle(chartTitle, new Font("隸書", Font.BOLD,                25)));        // 2 .2.1:設定中文        // x,y軸座標字型        Font labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12);        // 2 .3 Plot 物件 Plot 物件是圖形的繪製結構物件        CategoryPlot plot = chart.getCategoryPlot();        // 設定橫虛線可見        plot.setRangeGridlinesVisible(true);        // 虛線色彩        plot.setRangeGridlinePaint(Color.gray);        // 資料軸精度        NumberAxis vn = (NumberAxis) plot.getRangeAxis();        // 設定最大值是1        vn.setUpperBound(1);        // 設定資料軸座標從0開始        // vn.setAutoRangeIncludesZero(true);        // 資料顯示格式是百分比        DecimalFormat df = new DecimalFormat("0.00%");        vn.setNumberFormatOverride(df); // 資料軸資料標籤的顯示格式        // DomainAxis (區域軸,相當於 x 軸), RangeAxis (範圍軸,相當於 y 軸)        CategoryAxis domainAxis = plot.getDomainAxis();        domainAxis.setLabelFont(labelFont);// 軸標題        domainAxis.setTickLabelFont(labelFont);// 軸數值        // x軸座標太長,建議設定傾斜,如下兩種方式選其一,兩種效果相同        // 傾斜(1)橫軸上的 Lable 45度傾斜        // domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);        // 傾斜(2)Lable(Math.PI 3.0)度傾斜        // domainAxis.setCategoryLabelPositions(CategoryLabelPositions        // .createUpRotationLabelPositions(Math.PI / 3.0));        domainAxis.setMaximumCategoryLabelWidthRatio(0.6f);// 橫軸上的 Lable 是否完整顯示        plot.setDomainAxis(domainAxis);        // y軸設定        ValueAxis rangeAxis = plot.getRangeAxis();        rangeAxis.setLabelFont(labelFont);        rangeAxis.setTickLabelFont(labelFont);        // 設定最高的一個 Item 與圖片頂端的距離        rangeAxis.setUpperMargin(0.15);        // 設定最低的一個 Item 與圖片底端的距離        rangeAxis.setLowerMargin(0.15);        plot.setRangeAxis(rangeAxis);        // Renderer 物件是圖形的繪製單元        StackedBarRenderer renderer = new StackedBarRenderer();        // 設定柱子寬度        renderer.setMaximumBarWidth(0.05);        // 設定柱子高度        renderer.setMinimumBarLength(0.1);        //設定柱的邊框顏色        renderer.setBaseOutlinePaint(Color.BLACK);        //設定柱的邊框可見        renderer.setDrawBarOutline(true);        // // 設定柱的顏色(可設定也可預設)        renderer.setSeriesPaint(0, new Color(204, 255, 204));        renderer.setSeriesPaint(1, new Color(255, 204, 153));       

相關推薦

Java 學習筆記jfreechart 生成折線

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Java 學習筆記jfreechart 生成折線 ...

package com.yyh.jfreechart; import java.awt.Color; import java.awt.Font; import java.io.File; import java.io.FileOutputStream; import ja

Java學習筆記二十二】解析接口在Java繼承中的用法及實例分析

ani 復制代碼 ads compute 現在 target body 常量 實現接口 一、定義 Java接口(Interface),是一系列方法的聲明,是一些方法特征的集合,一個接口只有方法的特征沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具

Java 學習筆記 Error和Exception的聯系

相關 runt ble 及其 捕獲 exce throw 繼承 編譯 Error和Exception的聯系: Error和Exception的聯系 繼承結構:Error和Exception都是繼承於Throwable,RuntimeException繼承自Excep

Java 學習筆記 Sleep停止線程

run rgs ges xtend over exce http tac p s Sleep停止線程: 在Sleep狀態下被interrupt,interrupted 狀態會被擦除,返回false。 線程在Sleep狀態下被interrupt: public clas

Java 學習筆記 線程安全

div ora mage 線程安全 cnblogs cor exception rup ron 線程安全: 線程安全的方法一定是排隊運行的。 public class SyncObject { synchronized public void met

java學習筆記System類

系統 arr 操作系統 ring system tro separate rate java學習筆記 System類常用總結 System類概述   java.lang.System類,系統屬性信息工具類 常用靜態方法:   1. 1 public static long

java學習筆記字符流文件復制

body file 文件 [] while gpo class spa char 字符文件復制 1 FileReader fr =new FileReader("b.txt");//綁定源文件 2 FileWriter fw= new FileWriter("a.

java學習筆記面向對象static,final關鍵字

一次 static 變量 div nbsp 子類 方法 pan 抽取 java學習筆記之面向對象static,final關鍵字 一.static關鍵字 1.概述:   static靜態的,被static修飾的成員屬於類,不屬於單個對象,被所有對象所共享,存在靜態區中,靜態的

java學習筆記初識多線程

技術 運行 必須 dex ima this 認識 主線程 inf 初識多線程 一.進程的認識:   1.進程的理解:   進程可以理解成正在執行的任務,就是正在運行的程序,進程又分為兩種,一種是前臺進程,就是我們很直觀看見的,另一種是後臺進程,就是操作系統啟動就有的(系統級

effective java學習筆記不可實例化的類

style 類的方法 div pan ava 我們 工具 靜態 class 在沒有顯式聲明一個類的構造方法時,編譯器會生成默認的無參構造方法,在設計工具類時,我們通常將方法設置成靜態方法,以類名.方法名的形式調用,此時這個類就沒有必要創建實例,我們知道抽象類不可以被實例化,

java學習筆記網絡編程

col client 應用場景 err pri 多圖片 data oca 網絡 網絡編程 一.網絡通信協議   1.網絡協議     不同的操作系統,不同的硬件設備上都能夠聯網,是因為互聯網設計規定了一套標準,這套標準就被稱為網絡協議,網絡協議規定了網絡傳輸的格式,速率和方

java學習筆記面向對象多態

成員變量 clas 創建 無法 復用 xtend 數據類型 需要 類重寫 面向對象三大特性之多態 一.多態的概念   多態是繼封裝,繼承之後,面向對象的三大特性。   現實事物經常會體現出多種形態,如學生,學生是人的一種,則一個具體的張三同學既是學生也是人,即出現兩種形態。

java學習筆記xml

是什麽 read 文本標記 utf-8 轉義字符 本地緩存 system 進行 特殊 xml學習筆記 1:xml的概述    1.1 xml是什麽      標記語言:語言中出現了<a></a>的標簽       a:HTML 超文本標記語言

java學習筆記mysql2

數值類型 個數 合並 category name 數值 ice const cname mysql #-----sql指令的查詢----------(重點) #1 排序(order by) ASC:升序 DESC:降序 #SELECT * FROM 表名 ORDER BY

java學習筆記定時器

blog div this rgs date row demo sdf 時間 定時器 1 package pack01_timer; 2 3 import java.io.File; 4 import java.text.ParseException; 5 i

java學習筆記mysql3

style log 同名 ner mysql學習 mys 多表查詢 什麽 pid mysql學習筆記之多表查詢和子查詢 1 #--------------多表的查詢------------------- 2 # 交叉連接查詢 3 # 內連接查詢 4

java學習筆記DBUtils工具類

return on() 變參 ner where 占位符 使用步驟 args user DBUtils工具類 一.介紹   DBUtils是Apache組織開源的數據庫工具類。 二.使用步驟   ①.創建QueryRunner對象   ②.調用update()方法或者que

java學習筆記基礎語法(二)

讓其 實例 高效率 使用 個數 存儲 記錄 棧內存 數組 1.數組: 概念:同一種類型數據的集合,其實,數組就是一個容器 優點:可以方便的對其進行操作,編號從0開始,方便操作這些元素。 2,數組的格式 元素類型[]數組名=new 元素類型[數組元素個

Java學習筆記異常處理

span 怎麽辦 空指針 處理 異常處理 空指針異常 一個 算數 輸入 一.異常的分類   1.由Java虛擬機拋出的異常(Error):程序無法處理的問題,用戶不用去進行處理(虛擬機錯誤丶內存溢出錯誤丶線程死鎖)    2.Exception異常:程序本身可以進行處理的異