自学javase的回顾(1/5)


自学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
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值