【Java】菜鸟教程个人Java学习笔记
检索目录
- 前言
- 正文
- 在线编程
- 主要特性
- 专业术语:
- DOS命令操作
- 基础
- 规范
- 数组
- 排序
- 日期和时间
- 方法
- 方法的优点
- 方法的命名规则
- 方法的定义
- 变量作用域
- FileInputStream
- FileOutputStream
- 异常
- Java 数据结构
- Java 实例
- Java 环境设置实例
- Java 字符串
- Java 数组
- Java 时间处理
- Java 方法
- 打印图形
- Java 文件操作
- Java 目录操作
- Java 异常处理
- Java 数据结构
- Java 集合
- Java 网络实例
- Java 线程
- Java 测验
- 未完待续
前言
根据最近和众多师兄,同学,以及逛学校论坛看经验,发现大家对Java的认可度都要更高一些,而且根据前段时间的刷题经验,Java要比C++更灵活路也更宽,因此决定之后主要学习Java方面的编程,刷题也变换一种常用语言,认真为之后找工作打基础。
之前本科大一的时候,也学过一段时间的js语言,html5等等,相信天下语言是一家,努力加油吧。
我自己在菜鸟学习时的记录,可以实现网页运行代码,讲的也很流畅,源网址在这里,所有内容都基于菜鸟。
正文
在线编程
在线编程实例网址。
public class HelloWorld {/* 第一个Java程序* 它将输出字符串 Hello World*/public static void main(String[] args) { //推荐使用 String[] args,这样可以避免歧义和误读。System.out.println("Hello My World");}
}
主要特性
Java 语言是简单的:
Java 语言的语法与 C 语言和 C++ 语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java 丢弃了 C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java 语言不使用指针,而是引用。并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧。
Java 语言是面向对象的:
Java 语言提供类、接口和继承等面向对象的特性,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为 implements)。Java 语言全面支持动态绑定,而 C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。
Java语言是分布式的:
Java 语言支持 Internet 应用的开发,在基本的 Java 应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括 URL、URLConnection、Socket、ServerSocket 等。Java 的 RMI(远程方法激活)机制也是开发分布式应用的重要手段。
Java 语言是健壮的(Robost):
Java 的强类型机制、异常处理、垃圾的自动收集等是 Java 程序健壮性的重要保证。对指针的丢弃是 Java 的明智选择。Java 的安全检查机制使得 Java 更具健壮性。
Java语言是安全的:
Java通常被用在网络环境中,为此,Java 提供了一个安全机制以防恶意代码的攻击。除了Java 语言具有的许多安全特性以外,Java 对通过网络下载的类具有一个安全防范机制(类 ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类 SecurityManager)让 Java 应用设置安全哨兵。
Java 语言是体系结构中立的:
Java 程序(后缀为 java 的文件)在 Java 平台上被编译为体系结构中立的字节码格式(后缀为 class 的文件),然后可以在实现这个 Java 平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。
Java 语言是可移植的:
这种可移植性来源于体系结构中立性,另外,Java 还严格规定了各个基本数据类型的长度。Java 系统本身也具有很强的可移植性,Java 编译器是用 Java 实现的,Java 的运行环境是用 ANSI C 实现的。
Java 语言是解释型的:
如前所述,Java 程序在 Java 平台上被编译为字节码格式,然后可以在实现这个 Java 平台的任何系统中运行。在运行时,Java 平台中的 Java 解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。
Java 是高性能的:
与那些解释型的高级脚本语言相比,Java 的确是高性能的。事实上,Java 的运行速度随着 JIT(Just-In-Time)编译器技术的发展越来越接近于 C++。
Java 语言是多线程的:
在 Java 语言中,线程是一种特殊的对象,它必须由 Thread 类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为 Thread(Runnable) 的构造子类将一个实现了 Runnable 接口的对象包装成一个线程,其二,从 Thread 类派生出子类并重写 run 方法,使用该子类创建的对象即为线程。值得注意的是 Thread 类已经实现了 Runnable 接口,因此,任何一个线程均有它的 run 方法,而 run 方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java 语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为 synchronized)。
Java 语言是动态的:
Java 语言的设计目标之一是适应于动态变化的环境。Java 程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java 中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
专业术语:
- JDK(Java Development Kit ):编写Java程序的程序员使用的软件
- JRE(Java Runtime Environment):运行Java程序的用户使用的软件
- Server JRE (Java SE Runtime Environment):服务端使用的 Java 运行环境
- SDK(Software Development Kit):软件开发工具包,在Java中用于描述1998年~2006年之间的JDK
- DAO(Data Access Object):数据访问接口,数据访问,顾名思义就是与数据库打交道
- MVC(Model View Controller):模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法
DOS命令操作
1.快捷键:windows+R 呼出DOS窗口。
2.输入cmd(大小写不用区分)回车,打开DOS窗口。
常见的命令(基本都不区分大小写)
1.切换盘符: 盘符(就是电脑的C,D,E…盘) : (如 : D : )
2.查看文件或者文件夹: dir
3.进入某个文件夹: cd 文件夹名
4.返回上一级目录: cd…
5.清屏: cls
6.删除某个文件: del 文件名
7.删除某个文件夹: rd 文件夹名
8.退出DOS窗口: exit
基础
一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。
- 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
- 类:类是一个模板,它描述一类对象的行为和状态。
- 方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
- 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
编写 Java 程序时,应注意以下几点:
大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
主方法入口:所有的 Java 程序由 public static void main(String[] args) 方法开始执行。
常用的转义字符:
"\b" (退格) "\f" (换页) "\n" (换行) "\r" (回车) "\t" (水平制表符(到下一个tab位置)) "\' " (单引号) "\" " (双引号) "\\" (反斜杠)
规范
一、命名规范
1、 项目名全部小写
2、 包名全部小写
3、 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写。如:public class MyFirstClass{}
4、 变量名、方法名首字母小写,如果名称由多个单词组成,每个单词的首字母都要大写。如:
int index=0;
public void toString(){}
5、 常量名全部大写
A
如:
public static final String GAME_COLOR="RED";
6、所有命名规则必须遵循以下规则:
- 1)、名称只能由字母、数字、下划线、$符号组成
- 2)、不能以数字开头
- 3)、名称不能使用JAVA中的关键字。
- 4)、坚决不允许出现中文及拼音命名。
二、注释规范
1、类注释
在每个类前面必须加上类注释,注释模板如下:
/**
* Copyright (C), 2006-2010, ChengDu Lovo info. Co., Ltd.
* FileName: Test.java
* 类的详细说明
*
* @author 类创建者姓名
* @Date 创建日期
* @version 1.00
*/
2、属性注释
在每个属性前面必须加上属性注释,注释模板如下:
/** 提示信息 */
private String strMsg = null;
3、方法注释
在每个方法前面必须加上方法注释,注释模板如下:
/**
* 类方法的详细使用说明
*
* @param 参数1 参数1的使用说明
* @return 返回结果的说明
* @throws 异常类型.错误代码 注明从此类方法中抛出异常的说明
*/
4、构造方法注释
在每个构造方法前面必须加上注释,注释模板如下:
/**
* 构造方法的详细使用说明
*
* @param 参数1 参数1的使用说明
* @throws 异常类型.错误代码 注明从此类方法中抛出异常的说明
*/
5、方法内部注释
在方法内部使用单行或者多行注释,该注释根据实际情况添加。
如:
//背景颜色
Color bgColor = Color.RED
下面的例子展示如何访问实例变量和调用成员方法:
public class Puppy{int puppyAge;public Puppy(String name){// 这个构造器仅有一个参数:nameSystem.out.println("小狗的名字是 : " + name ); }public void setAge( int age ){puppyAge = age;}public int getAge( ){System.out.println("小狗的年龄为 : " + puppyAge ); return puppyAge;}public static void main(String[] args){/* 创建对象 */Puppy myPuppy = new Puppy( "tommy" );/* 通过方法来设定age */myPuppy.setAge( 2 );/* 调用另一个方法获取age */myPuppy.getAge( );/*你也可以像下面这样访问成员变量 */System.out.println("变量值 : " + myPuppy.puppyAge ); }
}
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级。
低 ------------------------------------> 高byte,short,char—> int —> long—> float —> double
变量类型
public class Variable{static int allClicks=0; // 类变量String str="hello world"; // 实例变量public void method(){int i =0; // 局部变量}
}
成员变量、局部变量、静态变量的区别
成员变量 | 局部变量 | 静态变量 | |
---|---|---|---|
定义位置 | 在类中,方法外 | 方法中,或者方法的形式参数 | 在类中,方法外 |
初始化值 | 有默认初始化值 | 无,先定义,赋值后才能使用 | 有默认初始化值 |
调用方式 | 对象调用 | — | 对象调用,类名调用 |
存储位置 | 堆中 | 栈中 | 方法区 |
生命周期 | 与对象共存亡 | 与方法共存亡 | 与类共存亡 |
别名 | 实例变量 | — | 类变量 |
访问控制
修饰符 | 当前类 | 同一包内 | 子孙类(同一包) | 子孙类(不同包) | 其他包 |
---|---|---|---|---|---|
public
|
Y | Y | Y | Y | Y |
protected
|
Y | Y | Y | Y/N(说明) | N |
default
|
Y | Y | Y | N | N |
private
|
Y | N | N | N | N |
final 表示"最后的、最终的"含义,变量一旦赋值后,不能被重新赋值。被 final 修饰的实例变量必须显式指定初始值。
final 修饰符通常和 static 修饰符一起使用来创建类常量。
条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。
variable x = (expression) ? value if true : value if false
条件、循环等使用都比较类似,便不再赘述。
Java 中 int 和 Integer 的区别:int 是基本数据类型,int 变量存储的是数值。Integer 是引用类型,实际是一个对象,Integer 存储的是引用对象的地址。
Math.floor 是向下取整。
Math.ceil 是向上取整。
Math.round 是四舍五入取整 但是需要注意的是:
- 1、参数的小数点后第一位小于 5,运算结果为参数整数部分。
- 2、参数的小数点后第一位大于 5,运算结果为参数整数部分绝对值 +1,符号(即正负)不变。
- 3、参数的小数点后第一位等于 5,正数运算结果为整数部分 +1,负数运算结果为整数部分。
数组
数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。
Java 语言中提供的数组是用来存储固定大小的同类型元素。
你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0,number1,…,number99。
首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:
dataType[] arrayRefVar; // 首选的方法或dataType arrayRefVar[]; // 效果相同,但不是首选方法
数组变量的声明,和创建数组可以用一条语句完成,如下所示:
dataType[] arrayRefVar = new dataType[arraySize];
另外,你还可以使用如下的方式创建数组。
dataType[] arrayRefVar = {value0, value1, ..., valuek};
数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 arrayRefVar.length-1。
该实例完整地展示了如何创建、初始化和操纵数组:
public class TestArray {public static void main(String[] args) {double[] myList = {1.9, 2.9, 3.4, 3.5};// 打印所有数组元素for (int i = 0; i < myList.length; i++) {System.out.println(myList[i] + " ");}// 计算所有元素的总和double total = 0;for (int i = 0; i < myList.length; i++) {total += myList[i];}System.out.println("Total is " + total);// 查找最大元素double max = myList[0];for (int i = 1; i < myList.length; i++) {if (myList[i] > max) max = myList[i];}System.out.println("Max is " + max);}
}
以上实例编译运行结果如下:
1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5
排序
冒泡排序
public class BubbleSort {/*** N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数。* @param args*/public static void main(String[] args) {int arr[] = {26,15,29,66,99,88,36,77,111,1,6,8,8};for(int i=0;i < arr.length-1;i++) {//外层循环控制排序趟数for(int j=0; j< arr.length-i-1;j++) {//内层循环控制每一趟排序多少次// 把小的值交换到前面if (arr[j]>arr[j+1]) {int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}System.out.print("第"+(i+1)+"次排序结果:");//列举每次排序的数据for(int a=0;a<arr.length;a++) {System.out.print(arr[a] + "\t");}System.out.println("");}System.out.println("最终排序结果:");for(int a = 0; a < arr.length;a++) {System.out.println(arr[a] + "\t");}}
}
[Hantn](javascript:
【Java】菜鸟教程个人Java学习笔记相关推荐
- 【C++】菜鸟教程个人C++学习笔记
我自己在菜鸟学习时的记录,可以实现网页运行代码,讲的也很流畅,源网址在这里 检索目录 标准化 代码一闪而过的问题所在和解决方法. **标识符** 为什么要使用 **using namespace st ...
- 菜鸟教程C语言学习笔记1
C语言环境-C语言常量部分已写在菜鸟教程下方 (7).C存储类 auto存储类 所有局部变量默认的存储类 只能用在函数内,即只能修饰局部变量 {int mount;auto int month; } ...
- 菜鸟教程C语言学习笔记2
(9)判断 判断语句 if if-else 嵌套if switch 嵌套switch 运算符 三元运算符?: (10)循环 循环类型 while do while for循坏 嵌套循环 循环控制语句 ...
- Java web与web gis学习笔记(二)——百度地图API调用
系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...
- Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- 《Java并发编程实践》学习笔记之一:基础知识
<Java并发编程实践>学习笔记之一:基础知识 1.程序与进程 1.1 程序与进程的概念 (1)程序:一组有序的静态指令,是一种静态概念: (2)进程:是一种活动,它是由一个动作序列组成 ...
- Java程序猿的JavaScript学习笔记(汇总文件夹)
最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...
- 拉勾网《32个Java面试必考点》学习笔记之二------操作系统与网络知识
本文为拉勾网<32个Java面试必考点>学习笔记.只是对视频内容进行简单整理,详细内容还请自行观看视频<32个Java面试必考点>.若本文侵犯了相关所有者的权益,请联系:txz ...
- 拉勾网《32个Java面试必考点》学习笔记之一------Java职业发展路径
本文为拉勾网<32个Java面试必考点>学习笔记.只是对视频内容进行简单整理,详细内容还请自行观看视频<32个Java面试必考点>.若本文侵犯了相关所有者的权益,请联系:txz ...
- Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
最新文章
- 【对讲机的那点事】玩无线电,你知道的天线有多少种?
- 项目视频光盘项目中所学概览-html5+批处理+bat转exe
- 接口练习题(书信接口)
- 集群中几种session同步解决方案的比较[转]
- 导入导出oracle数据库表的dmp文件
- struts2 零配置
- PostgreSQL最常见问题
- MyBatis系列-Mybatis入门精讲
- 嫌贫爱富,是人性,也是典型的消费心理
- 九、Promises
- 如何从服务器上取pdf文件,如何从服务器响应创建pdf文件?
- 【备忘】加入L2范数正则化后的正规方程求解参数推导过程
- 编写一个应用程序,给出汉字“你”“我”“他”在Unicode表中的位置。
- 看jQuery源码的技巧
- MQ消息队列概述及主流MQ分析
- android wifi分析工具,Wifi分析助手
- matlab 无刷电机,无刷直流电机MATLAB仿真模型
- Windows命令行调用windows 图片和传真查看器等
- struct tm 中的 tm_isdst 以及 mktime
- 关于ireport中文不显示问题
热门文章
- C#对STK11.4二次开发的Hello World
- 解决Specifying a namespace in include()withou providing an app_name
- eclipse 自动下载源码插件
- 最少拍控制系统设计(二)纹波问题分析与无纹波系统的设计与仿真(附matlab和simulink源文件)
- 网络暴利行业,天龙私服赚千万是不是梦想?
- 2021最新个人在线要饭网站源码
- 构建AD域 、 管理AD域
- 小火狐进化_第34章 契约小火狐
- 讲道理 | 三维高斯积分公式
- 基于OneNET物联网平台和GPRS网络继电器SAC07GSA的共享经济方案简介