欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaSE入门语法

程序员文章站 2023-12-09 20:08:03
小白自学javase的回顾(1/5)1、编写程序前的环境和java特性2、java基本数据类型3、运算符、键盘等待输入、控制语句4、方法和重载机制5、递归方法自学javase已经完结,用了25天,需要对25天的知识进行一个系统的消化。有知识说的不对的地方请多多谅解。1、编写程序前的环境和java特性在搭建java运行环境前,要了解java语言的特性:1、面向对象编程:面向对象是符合人的思维逻辑的一种方式,这种编程更容易使人理解。例如想要去写一个学生的数据库的时候,就要对学生定义一个类,这个类称为学...


自学javase已经完结,用了25天,需要对25天的知识进行一个系统的消化。有知识说的不对的地方请多多谅解。

1、编写程序前的环境和java特性

在搭建java运行环境前,要了解java语言的特性:
1、面向对象编程:
面向对象是符合人的思维逻辑的一种方式,这种编程更容易使人理解。例如想要去写一个学生的数据库的时候,就要对学生定义一个类,这个类称为学生类,如果想要去存储小红同学的数据,就要创建这个小红对象,通过这个对象去编写程序。这就是面向对象编程。
2、简单性:
java的简单性,例如java中不支持多继承,因为多继承比较复杂,一旦两个父类都有同名同参数的方法,一旦子类调用就会出现安全问题。而java中不支持实现多继承,但是一个类实现多个接口,而接口里不能实现方法,只能定义方法,要让类里去实现方法,就避免了安全问题。
3、跨平台性:因为java和其他语言不同,在编译之后会形成一个class字节码文件,这个字节码文件是通过java虚拟机来转换成汇编再转换成二进制文件的,而这个java虚拟机在不同操作系统上都有相对应的版本,而用户只需要拿出class字节码文件,到各个操作系统上的java虚拟机来运行这个代码,效果是一样的,所以java语言的跨平台性就是这样的。
4、健壮性:由于java语言中具有c语言中没有的垃圾回收机制,使得程序员在编写代码时不需要考虑内存分配的问题。垃圾回收机制又简称GC回收机制。
5、安全性:例如java中取消了指针的概念,因为指针可以随意指向内存区域,容易造成混乱。

了解了java特性之后,就要搭建运行的环境:
首先去官网下载JDK工具包http://www.oracle.com,因为JDK是程序员开发的运行环境的必要工具包,在安装JDK的时候会发现里面还有个JRE,所以讲讲JDK和JRE的区别,JDK中包含了JRE,JRE是运行的必要环境,也就是没有开发环境,只有运行环境,是给用户使用的。而JDK是开发运行的环境,是给程序员使用的。JRE中包含了java虚拟机(JVM)。工具包安装好之后,还需要编译工具。暂时采用EditPlus工具。另外系统运行的环境变量也要配置好。

java文件的编译和运行过程是怎么样的?
编译阶段:主要检查java源程序的正确性,如果检查没有错误就生成class字节码文件。它在DOS界面的代码是:javac 路径/文件名.java
运行阶段:class字节码文件载入JVM中解释运行。它在DOS界面的代码是:java 类名

另外还有扩展的内容:
常用的DOS命令:
exit 退出命令窗口
cls 清屏
DOS窗口中的内容怎么复制:在DOS窗口的任意位置,选中你想要复制的文本,然后点击鼠标右键,在空白处点击鼠标右键,粘贴你复制的文本
dir 列出当前目录下的文件和子目录
cd 可以完成目录的切换 用法:cd 目录的路径 目录的路径包括相对路径和绝对路径 绝对路径:表示该路径从某个磁盘的盘符下作为出发点的路径 相对路径:表示该路径从当前所在的路径下作为出发点的路径
cd … 回到上级目录
cd \ 直接回到根目录
c: 直接切换盘符,不需要加cd

尝试编写第一个helloworld:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("helloworld");
    }
}

上述代码需要记忆的几个知识点:
1、Helloworld是类体
2、main是主方法体
3、System.out.println(“helloworld”);是java语句。
java语句不能直接在类体中写,要在方法体里写。一个java文件只有一个public class,而且后面接的类名必须和java文件名一致。但是可以定义很多个class,而且每定义一个class,就会生成一个字节码文件。

标识符:
标识符是在java语言中有权利自己定义的名称称为标识符。
标识符有几个命名规则(必须遵守):
1、不能以数字开头,通常是以英文字母开头,但是可以以_和$开头。

public class HelloWorld {
    public static void main(String[] args) {
        int _=0;
        int $=0;
    }
}

2、严格区分大小写。
3、不能和关键字重复。

标识符有几个书写规范(可以不遵守,但是实际开发中非常重要,尽量遵守):
1、见名知意
2、类名和接口:例如public class HelloWorld,interface HelloWorld,首字母大写接下来每个单词首字母大写。
变量名和方法名:例如public static void printWord,int printWord,首字母小写接下来每个字母首字母大写。
包名:例如package age.cc.power,全部小写。
常量名:例如final int AGE,全部大写。

2、java基本数据类型

java中基本数据类型:后面数字代表所占空间大小(单位:字节)
1、整数型:byte1、short2、int4、long8
2、字符型:char2
3、浮点型:float4、double8
4、布尔型:boolean1
一个字节等于8个比特位:01010101,并且最左边的数字代表符号位,0代表整数,1代表负数。

什么是变量?
变量本质上来说是内存中的一块空间。

为什么存在数据类型?
因为数据要分配内存空间,需要定义大小。

变量的要求?
存储的数据必须和定义的类型一致。

变量的定义与修改:
如果一个变量定义好了,就不能重新定义。但是可以修改存储的数据。

根据变量的作用域来分类变量:
1、局部变量:在方法体之内,只能在方法体内发挥作用
2、成员变量:是类的属性,在类体中书写。根据不同的修饰符,作用域的大小也随之不同。

番外:如果想在终端打印"",就要使用\转义符,例如\t代表一个制表符

System.out.println("\"\"");

关于数据类型之间的互相转换的规则:
1、小的数据类型可以自动转换为大的数据类型,例如:

byte a=100;
int b=a;

2、大的数据类型转换成小的数据类型的时候,称为强转,需要加(转换类型),但是可能会有精度损失,例如:

byte a=100;
int b=a;
byte c=(byte) b;

3、boolean数据类型不能转换
4、整数型字面量没有超出byte,short,char的取值范围,可以直接将其赋值
5、byte、short、char、类型混合运算,先各自转换成int再运算,例如:

char c='a';
int a=10;
System.out.println(a+c);

6、多种数据类型混合运算,各自先转换成最大的数据类型再运算。

番外:一切计算机存储的数据格式是二进制的补码。

3、运算符、键盘等待输入、控制语句

算术运算符:
+ 求和
- 相减
* 乘积
/ 商
% 取余
++ 自加1
– 自减1
算数运算符中的i++和++i有什么区别?
i++是先赋值再做自加1,而++i是先自加1然后再赋值。

int c=1;
System.out.println(++c);//2
System.out.println(c++);//1

关系运算符:
>
>=
<
<=
==
!=
关系运算符的输出结果永远是布尔型数据。

System.out.println(1>2);//false

逻辑运算符:
& 逻辑与(可以翻译成并且)
| 逻辑或(可以翻译成或者)
! 逻辑非(取反)
&& 短路与
|| 短路或
短路与和短路或有什么特殊之处?
短路与在处理左边的内容时,如果左边的输出是false,则右边的代码不执行,输出直接为false。
短路或在处理左边的内容时,如果左边的输出是true,则右边的代码不执行,输出直接为true。

int a=1;
System.out.println(2>1||a++>1);//true
System.out.println(a);//1

赋值运算符:=、+=、-=、*=、/=、%=

三目运算符:布尔表达式?表达式1:表达式2,如果布尔表达式为true,则输出表达式1,反之,输出表达式2。

System.out.println(2>1?1:2);//1

“+”的拼接:
1、如果加号两边都是整数型数据,就进行加法处理。
2、如果加号两边其中一个是字符串型数据,就做字符串拼接。

System.out.println("ad"+12);//ad12

键盘等待输入:

java.util.Scanner s=new Scanner(System.in);//创建一个键盘输入器对象
String i=s.next();//键盘输入器对象调用next()方法,来将键盘输入的数据赋值给字符串i

控制语句:
常用的控制语句分为3大类:
1、选择语句:if、switch
2、循环语句:for、while、do while
3、转向语句:break、return、continue
break是终结循环语句的,还可以防止switch中case分支穿透现象

for (int i=0;i<10;i++){
	System.out.println(i);
        if(i==5){
           break;
     }
}//012345
public class Test {
    public static void main(String[] args) {
        int i=1;
        switch (i){
            case 1:
                System.out.println(1);
                break;
            default:
                System.out.println("false");
        }
    }
}//1,而不是1 false

return是终结类方法的,如果return后面接数据,就是这个方法返回的数据,需搭配返回值类型使用。

public class Test {
    public static void main(String[] args) {
        System.out.println(Add.add());//46
    }
}
class Add{
    public static int add(){
        return 23+23;
    }
}

continue是跳过当前,继续执行下一个。

public class Test {
    public static void main(String[] args) {
        for(int i=0;i<5;i++){
            if(i==3){
                continue;
            }
            System.out.println(i);//0124
        }
    }
}

4、方法和重载机制

为什么要有方法:
因为在实际开发中,会有很多重复的代码块,业务逻辑相同,重复去写会造成很多不必要的麻烦,要是有了方法,就只需要写一次,想要再去使用就可以调用这个方法。

方法的语法机制:
[修饰符列表] 返回值类型 方法名(形式参数列表){
方法体;
}
注意:返回值类型如果是void的时候,是无返回值的,方法体中不可以有return 数据;如果返回值类型有数据类型,那么必须有return 相应类型的数据;

public class Test
{
	public static void main(String[] args){
		 Method01.sum(100,200);//300
		 Method01.sum(300,400);//700
	}
	public static void sum(int x,int y){
		int z = x + y;
		System.out.println(z);
	}
}

重载机制就是相同的方法名,但是形式参数不同,执行的方法体不同。好处是便于代码的编写,更加整洁。

public class OverLoad
{
	public static void main(String[] args){
		System.out.println(sum(1,2));//3
		System.out.println(sum(1L,2L));//3
		System.out.println(sum(1.0,2.0));//3.0
	}
	public static int sum(int a,int b){
		return a+b;
	}
	public static long sum(long a,long b){
		return a+b;
	}
	public static double sum(double a,double b){
		return a+b;
	}
}

5、递归方法

何为递归?
一个方法的方法体中调用了自己的方法,叫做递归。
例如使用递归来写一个简易for循环。

public class Test {
    public static void main(String[] args){
        System.out.println(forTest(1,5));
    }
    public static int forTest(int a,int b){
        if(a<b){
            System.out.println(a);
            return forTest(++a,b);
        }else{
            return b;
        }
    }
}//12345

本文地址:https://blog.csdn.net/qq_39993973/article/details/107063843