什么是JAVA
什么是JAVA?不就是杯咖啡吗(○` 3′○)( 谁说的,有可能还是个妹子╰( ̄ω ̄o)(((
java是纯面向对象编程的语言。亲身经历:学JAVA无法解决单身问题
如何理解面向对象编程?
以下转自博客园的这个帖子。
例如我们设计一个桌球游戏(略过开球,只考虑中间过程)
A:面向过程方式思考:
把下述的步骤通过函数一步一步实现,这个需求就完成了。(只为演示概念,不细究逻辑问题)。
① palyer1 击球 —— ② 实现画面击球效果 —— ③ 判断是否进球及有效 —— ④ palyer2击球
⑤ 实现画面击球效果 —— ⑥ 判断是否进球及有效 —— ⑦ 返回步骤 1—— ⑧ 输出游戏结果
B:面向对象方式思考:
经过观察我们可以看到,其实在上面的流程中存在很多共性的地方,所以我们将这些共性部分全集中起来,做成一个通用的结构
- 玩家系统:包括 palyer1 和 palyer2
- 击球效果系统:负责展示给用户游戏时的画面
- 规则系统:判断是否犯规,输赢等
我个人结合博客园帖子的理解:
面向对象更像是做一个锤子,一个普遍性工具,一个实现循环显示数字的代码可以到多个地方应用,比如显示数字,让小灯循环亮起。需要这个功能调用这个类就可以了,方便快捷。但是缺点显而易见的,锤子不可能适合砸所有东西,这样面向对象也是,需要对应的库来实现。
面向过程更像是定制化,效率高,但是添加新东西,需要写代码,相当于造一个专用的扳手。
向世界问好
代码
public class HelloWorld{ //JAVA系统的类,文件名必须和类名相同
public static void main(String[]args){ //定义main方法(函数),一个 java 程序运行必须而且有且仅有一个 main 方法。JAVA程序开始,String(str)表明数据类型,args表示数组
System.out.println("hello,world"); //显示HelloWorld
} //注意:方法必须用大括号括起来
}
编译JAVA
win+R进入命令行,cd到Java文件所在目录,输入 javac + 文件名(带扩展名)编译。
运行
编译完成后,输入java + 文件名(不带后缀),运行
可能出现的问题
有的时候编译完成,运行,会出现这样的问题,那是编码方式不对。
就需要修改编码格式
另存为ANSI格式即可正常运行
安装Eclipse
任何东西只要娘化就会非常有趣,比如Eclipse娘 所以这才是程序员真正的快乐吗?
具体的安装可以参考这个教程:
JAVA基本语法
分隔符
分号(“;”)(英文):语句结束标记,for循环看分割不同成分 。
圆点(“.”):用于分割“类”中的函数,可以理解为Python里的 os.listdir 这段里圆点的作用(调用OS模块里面的listdir函数)
空格(” “):分割源代码里的不同部分,例如 int a; int b;
花括号(“}”):用于限定某一部分的范围,成对使用
例如:
public class Text {
piblic static void main (String[]args){
System.out.println("Hello");
}
}
标识符
起到表示作用的符号。(用来给类、对象、方法、变量、接口和自定义数据类型命名的。)
命名规则:由数字,字母和下划线(_),美元符号($)或人民币符号(¥)组成。
例如:
myName,My_name,Points,$points,_sys_ta,OK,_23b,_3_
非法标识符:
#name,25name,class,&time,if
JAVA关键字
Java关键字类别 | Java关键字 | 关键字含义 |
---|---|---|
访问控制 | private | 一种访问控制方式:私用模式,访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量) |
访问控制 | protected | 一种访问控制方式:保护模式,可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符 |
访问控制 | public | 一种访问控制方式:共用模式,可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。 |
类、方法和变量修饰符 | abstract | 表明类或者成员方法具有抽象属性,用于修改类或方法 |
类、方法和变量修饰符 | class | 声明一个类,用来声明新的Java类 |
类、方法和变量修饰符 | extends | 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口 |
类、方法和变量修饰符 | final | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 |
类、方法和变量修饰符 | implements | 表明一个类实现了给定的接口 |
类、方法和变量修饰符 | interface | 接口 |
类、方法和变量修饰符 | native | 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 |
类、方法和变量修饰符 | new | 用来创建新实例对象 |
类、方法和变量修饰符 | static | 表明具有静态属性 |
类、方法和变量修饰符 | strictfp | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范 |
类、方法和变量修饰符 | synchronized | 表明一段代码需要同步执行 |
类、方法和变量修饰符 | transient | 声明不用序列化的成员域 |
类、方法和变量修饰符 | volatile | 表明两个或者多个变量必须同步地发生变化 |
程序控制 | break | 提前跳出一个块 |
程序控制 | continue | 回到一个块的开始处 |
程序控制 | return | 从成员方法中返回数据 |
程序控制 | do | 用在do-while循环结构中 |
程序控制 | while | 用在循环结构中 |
程序控制 | if | 条件语句的引导词 |
程序控制 | else | 用在条件语句中,表明当条件不成立时的分支 |
程序控制 | for | 一种循环结构的引导词 |
程序控制 | instanceof | 用来测试一个对象是否是指定类型的实例对象 |
程序控制 | switch | 分支语句结构的引导词 |
程序控制 | case | 用在switch语句之中,表示其中的一个分支 |
程序控制 | default | 默认,例如:用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现 |
错误处理 | try | 尝试一个可能抛出异常的程序块 |
错误处理 | catch | 用在异常处理中,用来捕捉异常 |
错误处理 | throw | 抛出一个异常 |
错误处理 | throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
包相关 | import | 表明要访问指定的类或包 |
包相关 | package | 包 |
基本类型 | boolean | 基本数据类型之一,声明布尔类型的关键字 |
基本类型 | byte | 基本数据类型之一,字节类型 |
基本类型 | char | 基本数据类型之一,字符类型 |
基本类型 | double | 基本数据类型之一,双精度浮点数类型 |
基本类型 | float | 基本数据类型之一,单精度浮点数类型 |
基本类型 | int | 基本数据类型之一,整数类型 |
基本类型 | long | 基本数据类型之一,长整数类型 |
基本类型 | short | 基本数据类型之一,短整数类型 |
基本类型 | null | 空,表示无值,不能将null赋给原始类型(byte、short、int、long、char、float、double、boolean)变量 |
基本类型 | true | 真,boolean变量的两个合法值中的一个 |
基本类型 | false | 假,boolean变量的两个合法值之一 |
变量引用 | super | 表明当前对象的父类型的引用或者父类型的构造方法 |
变量引用 | this | 指向当前实例对象的引用,用于引用当前实例 |
变量引用 | void | 声明当前成员方法没有返回值,void可以用作方法的返回类型,以指示该方法不返回值 |
保留字 | goto | 保留关键字,没有具体含义 |
保留字 | const | 保留关键字,没有具体含义,是一个类型修饰符,使用const声明的对象不能更新 |
上表转自此帖子
注释
单行注释
public class Text{ //这是单行注释
多行注释
public class Text{
public static viod main (String[]args){/*这是多行注释
这是多行注释*/
System.out.println("hello,world");
}
}
文档注释
/**
这是文档注释
这是文档注释
*/
public class HelloWorld{
public static void main(String[]args){
System.out.println("hello,world");
}
}
JAVA数据类型
基本数据类型
整型
byte , short , int , log
//整型
int a = 1 ;
byte b = 2 ; // 最大表示到127
short c = 3 ;
long d = 4 ;
浮点型
float , double
//浮点型
double e = 0.1; //双精度浮点型
float f = 0.2f ; //单精度浮点型
double e1 = 0.1d;
字符型
char型,单个符号,需要用单引号引起来
//字符型
char c1 = 'R';
char c2 = 'T';
如果使用字符串 String,不会报错,但是不会输出(String数据类型是引用数据类型)。
String A = "String" //字符串,记得用双引号引起来
布尔类型
true 和 false
boolean b1 = true ;
boolean b2 = false ;
代码表示
//整型
int a = 1 ;
byte b = 2 ;
short c = 3 ;
long d = 4 ;
//浮点型
double e = 0.1;
float f = 0.2f ;
//在JAVA中,如果定义float类型,需要后面加个f,否则会默认转化为double类型
//字符型
char g = 'G';
//布尔型
boolean h = true;
//字符串
String i = "Hedio_Kojima"
引用数据类型
类(对象)
接口
数组
常量和变量
常量
常量值又称为字面常量,它是通过数据直接表示的,因此有很多种数据类型,像整型和字符串型等。
整型常量
整型常量是整数类型的数据。它的表现有四种:
二进制,八进制,十进制,十六进制
例如:
二进制 | 1111 |
八进制 | 17 |
十进制 | 15 |
十六进制 | f |
int i1 = 012 ; //八进制常量,以0开始
int i2 = 0x12 ; //十六进制常量,以0x开始
int i3 = 10 ; // 十进制常量,以0开始
浮点数常量
浮点数常量就是在数学中用到的小数。分为单浮点(float)和双浮点(double)。
例如
0.2233f
0.2333d
布尔常量
只有两个值, ture (真) 和 false (假)
字符常量
字符型常量值是用单引号引起来的一个字符,例如 ‘e’ , ‘a’ , ‘E’。
变量
变量的声明
格式
//数据类型 变量名 = 初值
int a = 234
其中:
int 是数据类型,
a 是变量名,
234 为 初值
作用域
也称变量的作用范围,即一个变量在多大的范围内可以使用。
类变量
独立于方法之外的变量,用 static 修饰。
public class LBL {
static int p=100; //类变量
public static void main(String[] args) {
System.out.println(p);
}
}
实例变量
独立于方法之外的变量,不过没有 static 修饰。
public class LBL {
String p="hello world"; // 实例变量
public static void main(String[] args) {
System.out.println(p);
}
}
局部变量
类的方法中的变量.
public class LBL {
public static void main(String[] args) {
int p = 123 ;
System.out.println(p);
}
}
相对关系
public class Text{
static int p1=0; // 类变量
String p2="hello world"; // 实例变量
public void method(){
int p3 =0; // 局部变量
}
}
当多个数据类型一同运算时,会自动转为高精度类型,(int —> float)