JAVA概述(一)


JAVA概述(一)

入门程序

1
2
3
4
5
6
7
8
9
//输出hello world
public class HelloWorld{
public static void main(String[] args){
System.out.println("hello world");
}
}
/*输出结果
hello world
*/

public:关键字,公共访问权限
class:关键字,声明一个类
HelloWorld:类名,与文件名一致
{} :作用域,当前类的代码范围
static:关键字,静态的
void:关键字,返回结果为空
main:方法名字,java程序入口方法
(String[] args):参数列表,表形参
System.out.println(“hello world”):

System.out.println()是将传递参数打印到控制台,并换行,这里参数为”hello world”

System是final类,out是System的静态成员变量(静态成员字段),类型为PrintStream,println是PrintStream类的一个方法,表示输出括号里的内容

注意事项

若类是用public修饰,类名需与文件名一致;不是public修饰,可不一致。
一个java文件中可有多个类,但至多一个public类。

注释

注释不参与编译

1
2
3
4
5
6
7
8
9
//单行注释

/*
多行注释
*/

/**
文档注释(生成外部文档:javadoc -d 文件名.java)
*/

关键字和标识符

关键字被java赋予特定含义的单词
标识符:给类,接口,变量等起名时使用的字符序列,由字母,数字,$和_组成,不能以数字开头,不能是关键字,区别大小写。
标识符的规范

  • 包名:包名要求全部小写
  • 类名:首字母大写,多个单词相连,每个单词首字母要大写
  • 方法和变量:一个单词首字母小写,多个单词除了第一个单词,其余单词首字母全部大写
  • 常量:所有字母大写,用_连接

变量

变量是一个可以改变的量,可存放数据。
变量的组成:数据类型,变量名,值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Test{
public static void main(String[] args){
//创建变量的方式
//1.先声明再赋值
//数据类型 变量名
//变量名=值;
//例
int a;//int表示整型,占用4个字节
a = 10;
//2.声明赋值同时进行
//数据类型 变量名 = 值;
//例
int b = 20;
//变量的使用
a=a+b;//将a和b的值加起来再赋给a
System.out.println(a);//30
}
}

成员变量和局部变量

成员变量:变量定义在类的内部,方法的外部。
局部变量:定义在类的方法内部的变量。

1
2
3
4
5
6
7
8
9
public class Test{
//成员变量
int a=10;
public static void main(String[] args)
{
//局部变量
String blog="ljsblog";
}
}

区别

  1. 定义位置不同
    • 局部变量:在方法内部
    • 成员变量:在方法的外部,类的内部
  2. 作用范围不同
    • 局部变量:只在方法中可用
    • 成员变量:整个类中都可用
  3. 成员变量有初始值,局部变量没有
  4. 内存位置不同
    • 局部变量:位于栈内存
    • 成员变量:位于堆内存
  5. 生命周期不同
    • 局部变量:随着方法进栈而诞生,出栈而消亡
    • 成员变量:随着对象创建而诞生,GC(垃圾收集)回收而消亡
  6. 成员变量有访问权限修饰符,局部变量没有,局部变量的权限即所在方法的权限

常量

常量不可以改变的量。

1
2
3
public class Test{
public final int WEEKDAYS=7;
}

数据类型

  • 基本数据类型
    • 整数:byte(占用1个字节) short(2) int(4) long(8)
    • 小数:float(4) double(8)
    • 布尔:boolean(1)
    • 字符:char(2)
  • 引用数据类型
    • 数组
    • 接口

:存放long数据时,需在数据后加L或l;存放float数据时,需在数据后加F或f。

数据类型转换

  1. 自动类型转换
    • 顺序:byte,short,char->int->long->float->double
  2. 强制类型转换
1
2
3
4
5
6
7
8
9
10
11
public class Test{
public static void main(String[] args)
{
//1.自动类型转换
int a=10;
long b=a;//int类型的10,自动变为long型

//2. 强制类型转换
byte c=(byte)a;//有可能因为精度的损失导致数据不准确
}
}

运算符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//算数运算符
+ - * / //加减乘除
% //取模(余数)
++ -- //若是放在变量前面,则先运算,后自增(减),若是放在变量后面,则先自增(减),后运算

//赋值运算符
= //直接赋值
+= -= *= /= %= //其中a+=b等价于a=a+b,其他同理
//+= -= *= /= %=不会做类型转换

//关系运算符
//会产生布尔值的结果
>大于 <小于 >=大于等于 <=小于等于
==等于//判断是否等于不是=,而是==
!=不等于

//逻辑运算符,两个布尔类型的操作数或表达式进行逻辑比较
& //逻辑与,只有两边都是true,结果才是true,只有有一边是false,结果就是false
| //逻辑或,只要有一遍是true,结果就是true
^ //异或,两边结果相同为false,不同为true
! //逻辑非,false变true,true变false
&& //短路与,与逻辑与运算逻辑相同,区别在于短路与只要做左边为false,不会执行右边表达式,结果一定是false,相比之下效率更高
|| //短路或,与逻辑或运算逻辑相同,区别在于,只要左边是true,结果就是true,右边不执行

//三元运算符
布尔表达式?结果1:结果2 //表达式结果为真,获得结果1;表达式结果为假,获得结果2

//位运算符,运算符两边不是布尔值表达式,而是数值,则此时是位运算,0为false,1为true
& //按位与
| //按位或
^ //异或
~ //按位取反,0变1,1变0
<< //有符号的左移,低位补0
>> //有符号的右移,高位补符号位
>>> //无符号的右移,高位补0

表达式

使用运算符连接变量或字面值,可得到一个最终结果

字符串连接符+

运算的两边都是数值时,+为算数运算符。
当运算符的两边有一个是字符串,+为字符串连接符,会把另一边变成字符串连接,形成新的字符串

1
2
3
4
5
6
7
8
9
10
11
12
public class HelloWorld{
public static void main(String[] args){
int a=1;
int b=2;
int c=3;
String word="hello";
System.out.println(word + a + b + c);//hello123
System.out.println(a + word + b + c);//1hello23
System.out.println(a + b + c + word);//6hello
System.out.println(word + (a + b + c));//hello6
}
}

控制台输入

程序运行中,可在控制台(终端)手动录入数据,再让程序继续运行。
导包语法
import 包名.类名;
将外部class文件的功能引入到自身文件中。
顺序

  1. 导入import java.util.Scanner
  2. 声明Scanner类型的变量
  3. 使用Scanner类中常用的方法:
    • nextInt() 获得整数
    • nextDouble() 获得小数
    • next() 获得字符串,遇到空格,Enter,Tab等就会结束输入
    • next().charAt(0) 获得单个字符
    • nextLine():获取一行字符串,遇到Enter键才会结束输入
    • nextBoolean():获取一个布尔值(true或false)

next()和nextLine()的区别

  • next()

    • 读取的字符串不包含分隔符,若输入存在多个以空格分隔的字符串,next()方法只会返回第一个字符串
    • 读取前会忽略输入中的前置空格
  • nextLine()

    • 从输入源读取并返回一行字符串,包括换行符(\n)在内
    • 会读取输入源中全部的内容直至遇到换行符,或是输入结束
    • nextLine()方法返回的字符串包含空格和其他特殊字符

范例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import java.util.Scanner;

public class Test {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);

System.out.print("请输入整数:");
int i = scanner.nextInt();
System.out.println("整数为"+i);

System.out.print("请输入小数:");
double d = scanner.nextDouble();
System.out.println("小数为"+d);

System.out.print("请输入字符串:");
String str = scanner.next();
System.out.println("字符串为"+str);

String st=scanner.nextLine();

System.out.print("请输入一行字符串:");
String s = scanner.nextLine();
System.out.println("该行字符串为"+s);

System.out.print("请输入单个字符:");
char c = scanner.next().charAt(0);
System.out.println("字符为"+c);

System.out.print("请输入布尔值:");
boolean b = scanner.nextBoolean();
System.out.println("布尔值为"+b);
}
}

/*控制台输出
请输入整数:99
整数为99
请输入小数:9.9
小数为9.9
请输入字符串:str
字符串为str
请输入一行字符串:sd fasf
该行字符串为sd fasf
请输入单个字符:a
字符为a
请输入布尔值:true
布尔值为true

*/

Author: ljs
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source ljs !
评论
  TOC