0x01 入坑起因
因为在中国JAVA实在是太火了,JAVA WEB的审计也非常吃香,所以肯定要顺势而行(其实也是为了给女朋友做作业哈哈哈)
近期的博客会写一些自己学习JAVA的记录,后期会写到JAVA WEB的审计方向,大家敬请期待
0x02 基础语法与Hello World
以下部分摘抄于菜鸟教程
来看万物都离不开的hello world
public class HelloWorld {
/* 第一个Java程序
* 它将输出字符串 Hello World
*/
public static void main(String[] args) {
System.out.println("Hello World"); // 输出 Hello World
}
}
编写 Java 程序时,应注意以下几点:
1.大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
2.方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
3.源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
4.主方法入口:所有的 Java 程序由 public static void main(String[] args) 方法开始执行。
Java 标识符
Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
关于 Java 标识符,有以下几点需要注意:
- 所有的标识符都应该以字母(A-Z 或者 a-z),美元符( )、或者下划线 ( ) 开始首字符之后可以是字母( A − Z 或者 a − z ) , 美元符( )、或者下划线(_)开始 首字符之后可以是字母(A-Z 或者a-z),美元符( )、或者下划线()开始首字符之后可以是字母(A−Z或者a−z),美元符()、下划线(_)或数字的任何字符组合 关键字不能用作标识符 标识符是大小写敏感的
- 合法标识符举例:age、$salary、_value、__1_value
- 非法标识符举例:123abc、-salary
Java修饰符
像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:
- 访问控制修饰符 : default, public , protected, private
- 非访问控制修饰符 : final,abstract, static, synchronized
0x03 MyEclipse安装与使用
安装就不讲了,网上文章太多了,着重讲一下代码补全
在原版Eclipse中只有检测到输入.才会补全代码,非常不方便
下面附上代码自动补全方法
window->Preferences->Java->Editor->Content Assist
auto activaction -> Enable auto activation -> Auto Activation triggers for java “.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,([{”
随后代码即可自动补全
0x04 类与方法
Java作为一种面向对象语言。支持以下基本概念:
多态 继承 封装 抽象 类 对象 实例 方法 重载
本节我们重点研究对象和类的概念。
- 对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
- 类:类是一个模板,它描述一类对象的行为和状态。
下图中男孩(boy)、女孩(girl)为类(class),而具体的每个人为该类的对象(object):
下图中汽车为类(class),而具体的每辆车为该汽车类的对象(object),对象包含了汽车的颜色、品牌、名称等。
Java中的对象
现在让我们深入了解什么是对象。看看周围真实的世界,会发现身边有很多对象,车,狗,人等等。所有这些对象都有自己的状态和行为。
拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。
对比现实对象和软件对象,它们之间十分相似。
软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。
在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。
Java 中的类
类可以看成是创建 Java 对象的模板。
通过上图创建一个简单的类来理解下 Java 中类的定义:
public class Dog {
String breed;
int size;
String colour;
int age;
void eat() {
}
void run() {
}
void sleep(){
}
void name(){
}
}
一个类可以包含以下类型变量:
- 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
- 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
- 类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型。
一个类可以拥有多个方法,在上面的例子中:eat()、run()、sleep() 和 name() 都是 Dog 类的方法。
构造方法
每个类都有构造方法。如果没有显式地为类定义构造方法,Java 编译器将会为该类提供一个默认构造方法。
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
下面是一个构造方法示例:
public class Puppy{
public Puppy(){
}
public Puppy(String name){
// 这个构造器仅有一个参数:name
}
}
创建对象
对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建对象需要以下三步:
声明:声明一个对象,包括对象名称和对象类型。
实例化:使用关键字 new 来创建一个对象。
初始化:使用 new 创建对象时,会调用构造方法初始化对象。
下面是一个创建对象的例子:
public class Puppy{
public Puppy(String name){
//这个构造器仅有一个参数:name
System.out.println("小狗的名字是 : " + name );
}
public static void main(String[] args){
// 下面的语句将创建一个Puppy对象
Puppy myPuppy = new Puppy( "tommy" );
}
}
编译并运行上面的程序,会打印出下面的结果:
小狗的名字是 : tommy
访问实例变量和方法
通过已创建的对象来访问成员变量和成员方法,如下所示:
/* 实例化对象 */
Object referenceVariable = new Constructor();
/* 访问类中的变量 */
referenceVariable.variableName;
/* 访问类中的方法 */
referenceVariable.methodName();
实例
下面的例子展示如何访问实例变量和调用成员方法:
public class Puppy{
int puppyAge;
public Puppy(String name){
// 这个构造器仅有一个参数:name
System.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 );
}
}
编译并运行上面的程序,产生如下结果:
小狗的名字是 : tommy 小狗的年龄为 : 2 变量值 : 2
0x05 利用以上概念和循环,三种方式实现九九乘法表
双for循环
package multiply;
public class multiply {
pub
public static void main(String[] argStrings) {
print_table();
}
public static void print_table() {
for (int i = 1; i <= 9; i++) {
for (int j = i; j <= 9; j++) {
System.out.print(i + "x" +j +"=" + (i*j) +"\t" );
}
System.out.println();
}
}
}
while + for循环
package multiply;
public class multiply2 {
public static void main(String[] args) {
printtable_while();
}
public static void printtable_while() {
int i = 1;
while (i<=9) {
for (int j = i; j <=9; j++) {
System.out.print(i + "x" + j + "=" +(i*j) +"\t");
}
i++;
System.out.println();
}
}
}
双while循环
package multiply;
public class multiply3 {
public static void main(String[] args) {
printtable_while();
}
public static void printtable_while() {
int i = 1;
while (i<=9) {
int j=i;
while(j<=9) {
System.out.print(i + "x" + j + "=" + (i*j) + "\t");
j++;
}
i++;
System.out.println();
}
}
}
运行时需要设置好main class主类
以package名为multiply为例,运行multiply2这个类
需要在run configuration中配置如下
0x06 结语
刚刚入坑JAVA,非计算机科班出身,水平有限,各位大佬轻喷,只做学习记录
JAVA WEB学习道阻且长,我们慢慢来~
附:JAVA关键字表,方便日后查阅
下面列出了 Java 关键字。这些保留字不能用于常量、变量、和任何标识符的名称。
关键字 说明
访问控制
private 私有的
protected 受保护的
public 公共的
default 默认
类、方法和变量修饰符 abstract 声明抽象
class 类
extends 扩充,继承
final 最终值,不可改变的
implements 实现(接口)
interface 接口
native 本地,原生方法(非 Java 实现)
new 新,创建
static 静态
strictfp 严格,精准
synchronized 线程,同步
transient 短暂
volatile 易失
程序控制语句
break 跳出循环
case 定义一个值以供 switch 选择
continue 继续
default 默认
do 运行
else 否则
for 循环
if 如果
instanceof 实例
return 返回
switch 根据值选择执行
while 循环
错误处理
assert 断言表达式是否为真
catch 捕捉异常
finally 有没有异常都执行
throw 抛出一个异常对象
throws 声明一个异常可能被抛出
try 捕获异常
包相关
import 引入
package 包
基本类型
boolean 布尔型
byte 字节型
char 字符型
double 双精度浮点
float 单精度浮点
int 整型
long 长整型
short 短整型
变量引用
super 父类,超类
this 本类
void 无返回值
保留关键字
goto 是关键字,但不能使用
const 是关键字,但不能使用
null 空