Java笔记1

sample:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package demo;           //声明包
public class TestJava{
/**
* 主方法
* 一个类如果用public声明 那么它必须与文件名一致
*/
public static void main(String[] args) {
int num;                                 //声明一个整型变量num
num = 5;                                 //赋值
System.out.println("这是数字"+num);      //输出
System.out.println("我有"+num+"本书!");  //输出
//System.out 标准输出流 与打印机、显示器相关
//println=print+line(换行)
//也可以使用print 就不会换行
}
}

首先可以明确的一点是,较于C语言,java程序中可以有多个类,每个类有一个main主体代表一切从这里开始,以上面的代码为例。

public static void main(String[] args)

public代表main方法是一个公共的方法,static代表是一个静态的。void与C语言中类似,可以理解为无返回值

  1. 标识符
    只能用字母,数字,下划线等组成,且数字不能作开头,也要避开关键字,跟C类似

  2. 注释

  • 单行 //
  • 多行 /**/
  • 文档 /*此处为代码 /**后再来个回车就有了
    3.数据类型(跟C大致一同,除了布尔)
1
2
3
4
整型:字节(byte)、短整型(short)、整型(int)、长整形(long)
浮点:单精度(float)、双精度(double)
字符:存储字符(char)
布尔:存储真假关系(boolean),里面只有两个值(true与false)

引用类型:
string(字符串)

class(类)

1
2
3
4
5
6
7
8
9
10
11
12
public class TestJava {
/**
* 主方法
* 一个类如果用public声明 那么它必须与文件名一致 如左边*.java
*/
public static void main(String[] args) {
int num = 10;
byte age = 20;
float price =12.5f;
double weight = 12.5;
}
}

数据类型是会根据情况自动转换的
1.自动类型转换:低到高

比如:byte a = 10;int num = b;

double d = 10;用system.out.println(d);会答应出10.0;

2.强制转换

double d = 10.1;

int a = 10;

此时输出会省略d的小数部分输出10;

此处注意 float f = 3.1是错误的,因为java中3.1默认为double,我们应该这样定义 float f =3.1f(大小写均可)或者float f =(float)f 3.1

上面主要是变量,接下来是常量

对于变量或者是常量,都需要先声明

1
2
3
语法: final 数据类型 常量名称 = 值
规范:常量名称通常使用大写字母,比如PI、YEAR等等
规则:常量名称符合标识符的要求,只能用字母、数字、_、$组成,不能以数字开头、不能使用关键词
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class TestFinal {
static final int YEAR = 365; //定义一个常量(在main外或者里面都可以)
//main方法是静态的 所以上面定义也要加static
public static void main(String[] args) {
System.out.println("一年有"+YEAR+"天");
System.out.println("两年有"+YEAR*2+"天"); 
}
}
如果把YEAR的定义放在main里面就可以不加
public class TestFinal{
public static void main(String[] args) {
final int YEAR = 365;
System.out.println("一年有"+YEAR+"天");
}

}

变量的声明和赋值已经在上文表明,就不再赘述了

1
2
3
4
5
6
7
8
9
10
public static void main(String[] args) {
int num = 10;
System.out.println("num="+num);
double money = 1000000;
System.out.println("money="+money);
num = 100;
System.out.println("num="+num);
char ch = 'z';
System.out.println("ch="+ch);
}

在java里,如果前后字符不是同一类型,那么在这种情况下+号充当连接符号
定义了常量和变量,那么他们也会有一定的作用范围,按照这个来分类,可以分为成员变量和局部变量

1.成员变量

在类体中定义的变量,作用范围为整个类,这个类中都可以访问到定义的这个变量

1
2
3
4
5
6
7
public class Test {
static int k = 1;   //即为成员变量---在类体中定义
public static void main(String[] args) {

}

}

2.局部变量
在一个函数(方法)或代码块中定义的变量

特点:局部变量在方法或代码块被执行的时候创建,在结束时被销毁

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Test {

public static void main(String[] args) {
int a = 1;
//以下就是一个块
{
int b = 2;
System.out.println("a="+a);
System.out.println("b="+b);
}
int b = 3; //因为在上面执行结束后 代码块就被销毁了
System.out.println("a="+a);
System.out.println("b+"+b);
}

}

在java里,由{}大括号包围起来的部分代码,被称为代码块
成员变量和局部变量是可以重名的,当我们调用其的时候,会服从就近原则

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Test {
static int var = 1;
public static void main(String[] args) {
int var = 2;
System.out.println("the value of var = "+var);
}

}

例二:
public class Test {
static int var = 1;
public static void main(String[] args) {
int var = 2;
System.out.println("the value of var = "+var);
pt();
}
public static void pt() {
System.out.println("the value of var = "+var);
}

}

#如果不删除int var = 2,结果会显示 2,删除后则为1;

另外一个小知识:
Java在作用范围中禁止嵌套,在C/C++中是可以的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
报错
public static void main(String[] args) {
int a = 1;
{
int a =2
System.out.println("a="+a);
}
}
在C语言中正确
#include<stdio.h>

int main()
{
int a = 1;
{
int a=2;
printf("%d",a);
}
 } 

challenge1

1
2
3
4
5
6
7
8
9
10
1-100的累加和
public class Test{
public static void main(String[] args){
int sum = 0;
for(int i = 1;i <= 100;i++){
sum += i;
}
System.out.println("sum = " + sum);
}
}