1-Java入门

本文是Java入门教程,先介绍计算机硬件、程序、进制等先修知识,以及DOS常用命令。接着阐述Java简介,包括特点、发展历程、JDK和JRE等。然后讲解Java语法,如注释、关键字、变量常量、数据类型等。最后介绍Java流程控制,如分支和循环语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先修

        计算机的硬件系统通常由五大部件构成:运算器、控制器、存储器、输入设备和输出设备。

        其中,运算器和控制器放在一起就是我们通常所说的中央处理器,它的功能是执行各种运算、控制指令以及处理计算机软件中的数据。

        程序:指令的集合。写程序就是将一系列的指令按照某种方式组织到一起,然后通过这些指令去控制计算机做事。

  • 进制:

        计算中存储数据的最小单元是字节:

        8 bit (位) = 1 byte (字节)

        1024byte = 1KB、1024KB = 1MB、1024MB = 1GB、1024GB = 1TB、1024TB = 1PB、1024PB = 1EB

  • 原码、反码和补码:

        原码:存储数据,用最高为表示符号位(0正1负),其它位表示数值大小

        反码 :1、正数的反码和原码是一样        2、负数:符号位不变,其他位取反(1变0,0变1)

        补码:1、正数原反补相同(三位一体)        2、负数:补码在反码的基础上+1

  • DOS常用命令:

        dir:无参数:查看当前所在目录的文件和文件夹。

                /s:查看当前目录下所有子目录的文件和文件夹。

                /a:查看包括隐含文件的所有文件        /ah:只显示出隐含文件。

                /w:以紧凑方式(一行显示5个文件)显示文件和文件夹        /p:以分页方式(显示一页之后会自动暂停)显示。

                其他的参数可以用:dir/?查看。

        cd:        目录名: 进入特定的目录       cd\ 退回到根目录         cd..退回到上一级目录。

        md、rd :        md 目录名:建立特定的文件夹        rd 目录名:删除特定的文件夹。

        cls:        清除屏幕。

        copy:        copy 路径\文件名 路径\文件名 :把一个文件拷贝到另一个地方。

        move:       move 路径\文件名 路径\文件名 :把一个文件移动到另一个地方(剪切复制)。

        del:        del 文件名:删除一个文件        del .:删除当前文件夹下所有文件        del不能删除文件夹。

        deltree:        删除文件夹和它下面的所有子文件夹还有文件(不要乱用)。

        format:        format x: :x代表盘符,格式化一个分区。在dos下是用fat文件系统格式化的,在windows2000安装的时候会问你要不要转换为ntfs。

        type:        type 文本文件名:显示出文本文件的内容。

        edit:        小程序,编辑文本文件用的。

        ren:        ren 旧文件名 新文件名:改文件名。


Java简介

        Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

        Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。

        Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

  • Java的发展过程:

        1996年1月,Sun公司发布了Java的第一个开发工具包(JDK 1.0)

        2004年9月30日,J2SE1.5发布,成为Java语言发展史上的又一里程碑(J2SE 1.5更名为Java SE 5.0)

        2005年6月,Java的各种版本已经更名,已取消其中的数字2,如J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME更名为JavaME

        2006年11月13日,Java技术的发明者Sun公司宣布从2007年3月起,全世界所有的开发人员均可对Java源代码进行修改

        2009年,甲骨文公司宣布收购Sun

        2014年,甲骨文公司发布了Java8正式版

  • JDK和JRE:

        JRE(Java Runtime Environment):Java运行环境,如果要运行Java程序,就需要JRE的支持,JRE里包含JVM。

        JDK(Java Development Kit):Java开发工具,包含开发Java程序的所有工具,如javac和java等,JDK里包含JRE。

        Java虚拟机(Java Virtual Machine),简称JVM,运行所有Java程序的虚拟计算机。JVM是Java语言的运行环境,也是Java 最具吸引力的特性之一。JVM用于读取并处理编译过的与平台无关的字节码(class)文件,从而实现Java的可移植性。但是值得注意的是Java虚拟机是不跨平台的。也就是说在Win下得装Win版的JVM,在Linux下装Linux版的JVM。

        一处编译,处处运行(字节码文件.class)


Java语法

  • 注释:

        // 单行注释 --> 单行多注释使用 ctrl+/

        /**/多行注释

        /***/文档注释

        ps:被注释的部分不会被编译和执行

  • 基本语法:

        1、Java严格区分大小写的,main和Main完全不同

        2、一个文件中可以定义多个类,但只能有一个类是使用public,并且这个使用public 修饰的类,类名必须和文件名一致,有几个类就会生成几个字节码文件(.class)

        3、执行逻辑运行必须有main方法

  • 关键字:

        保留字:java预留的关键字。现在还没用到,但是在升级版本中可能作为关键字。

        1、goto :但无任何作用。结构化程序设计完全不需要 goto 语句即可完成各种流程,而 goto 语句的使用往往会使程序的可读性降低,所以 Java 不允许 goto 跳转。

        2、 const:是一个类型修饰符,使用const声明的对象不能更新。与final某些类似。

  • 语句分割符:

        分号 “ ; ” 一句话的结束

        各种括号 --> {} [] ()都能用到 --> 成对出现

        空格 --> 分隔语句

        点 --> the

  • 标识符:

        标识符的作用即定义"名字" ,比如:类名,方法名,变量名

        规则:1.由字母,数字,下划线组成,但是不能以数字开头        2.大小写敏感        3.不能使用关键字和保留字        4.不能使用Java内置的类名作为自己标识符(类名)

  • 变量常量:

        常量:程序中固定不变的量

                常量分类:        字面常量:--> 看到即知道是多少        布尔常量:false,true

                定义常量:--> 在程序中修改变量得来的 --> 关键字 final(常量名大写)

        变量:程序中可以改变的量        有多个变量写在一句话中使用,分隔 --> int a,b,c;

                Java中变量有范围之分,修饰之分:

                全局变量(面向对象-->属性):作用域可以在整个类的内部或整个工程

                局部变量:作用域仅限在方法体中或小括号中

                先排除权限修饰符,关键字:static 静态的,属于类的,所有对象共享的

                1.静态变量--> 使用了static修饰并且是全局变量        2.普通变量--> 没有使用static修饰

  • 数据类型:

  • 数据类型的特殊说明:

        小数(浮点)底层使用的是科学计数法:1234.89 => 1.23489*10^3 => 1.23489E(e)3,存储精度不足(不准),不能使用到金融,电信(BigDecimal用来存储小数),小数存储的范围大于整数,同等条件下 float 数值范围 就比 Long 要大

        Java使用的是Unicode编码; Eclipse中默认使用的编码集是GBK

        byte b1 = -128;//8bit
        byte b2 = 127;
        short s1 = -32768;//16bit
        short s2 = 32767;
        int i1 = -2147483648;//32bit
        int i2 = 2147483647;
        long l1 = -2147483648;//64bit >32bit报错(java8)
        long l2 = 2147483647;
        char ch = '秃';//Unicode编码规则下的单个字符
  • 数据类型转换问题:

        自动类型转换:相当于将小范围变量的值赋值给大范围变量的值,会进行自动类型转换

        强制类型转换:相当于将大范围变量的值赋值给小范围变量的值,强制类型转换(损失精度)

        ps:byte,short,char在计算的时候,首先自动提升为int类型,然后再参与运算

        float在计算的时候不会自动提升为double。(float f = 1.23f; 需要添加f)

  • 运算符:

        算数运算符:+        -        *        /        %

        关系运算符:>        >=        ==        <        <=        !=

                关系运算符会和变量或常量组成表达--> 关系表达式 --> 结果只有true或false

        逻辑运算符:&&(与)        || (或)        !(非)        ^(异或)

                逻辑运算符一般会和关系表达式连用 --> 逻辑表达式

        & 和 && 之间的区别:

                &判断所有表达式的真假,才会得到结果

                &&只要其中一个为假就就不会再判断其他条件了直接返回结果

        ++、-- 运算符:

                ++i:(i=1时)

                        ++i,--i:先对 i 进行 ++或 -- 操作,然后将 i 计算到的值再参与其他运算

                        int a = ++i;先做等号右边 ++i --> i = i+1 --> i = 2,再将2的值赋值给a,此时a为2

                i++:(i=1时)

                i++,i--:先将 i 的值参与其他计算,然后再进行 ++ 或 -- 操作

                int a = i++;先做等号的右边,先取 i 的值赋值给a,此时a为1,然后 i 再进行+1操作

  • 转义字符:

        可以在字符串中使用的特殊字符:

        \n --> 回车 (linux系统)        \r --> 回车(windows系统 --> \r\n)        \t --> 制表符 (tab键)

  • 复合运算符:

        +=        -=        *=        /=        %=

        ps:复合运算符若右边有表达式先计算表达的值然后在计算其他值


Java流程

  • if单分支:

        if ( 表达式 ( 条件 ) ) { 执行语句; }

  • if-else分支:

        if ( 表达式 ) { 执行语句1;   //执行后跳出分支结构

        } else { 执行语句2; }

  • 三目运算符 ? :

        也叫三元运算符,条件运算符,就是一个简化版本的if-else

        语法:表达式1(条件) ? 结果1 : 结果2

  • if-else if 分支:

        if ( 表达式1 ) { 执行语句1;   //执行后跳出分支结构

        } else if ( 表达式2 ) { 执行语句2;

        } else if ( 表达式3 ) { 执行语句3;

        } else { 执行语句n;}   //最后一种条件 --> 可以省略一个else if

  • if -else 嵌套:

        if-else嵌套最好不要超过三层,if-else 嵌套多了,逻辑可以优化,但会影响项目的执行时间

  • switch-case分支:

        switch(常量){

        case 常量1: 执行语句;break;

        case 常量2: 执行语句;break;

        case 常量3: 执行语句;break;

        default: 执行语句;break;

        }

        贯穿:在case的后面不使用break。会发生贯穿,此时会一直执行不会管case后面的条件,直到遇到 break 或是 default 才会结束

int month = (int)(Math.random()*12+1);
switch (month) {
    case 2:
    System.out.println("28天");
    break;
    //4个月 4 6 9 11
    case 4:
    case 6:
    case 9:
    case 11:
    System.out.println("30天");
    break;
    default:
    System.out.println("31天");
    break;
}
  • swithc 和 if:

        相同:都是分支语句

        不同点:1.语法不一样        2.判断条件不一样,if 判断的条件是 boolean 类型的表达式,switch 判断条件可以是:整数int,字符 char,枚举 enum,字符串,但就是不能是 boolean

        场景:if一般是某个区间,switch是一个具体的值

  • while:

        循环变量赋初值(循环开始的位置)

        while ( 表达式 ( 循环条件 ) ) {

        重复执行的事情[执行语句];循环变量的自增或自减

        }

  • do-while:

        循环变量赋初值

        do {

        执行语句;循环变量自增或自减

        } while ( [表达式]循环条件 );

  • do-while和while:

        do-while 先执行一次,然后再判断条件

        while先判断再执行

        do-while和while死循环的写法:在()中写 true 即可

  • for循环

        for ( 循环变量赋初值;循环条件;循环变量自增自减 ) {执行语句;}

public class ForDemo {
	/*
	 * for的6钟写法
	 */
	
	public static void main(String[] args) {
		/*
		 * 循环三要素:
		 * 循环变量赋初值(开始的位置)
		 * 循环条件
		 * 循环变量的自增或自减
		 */
		//1.标准写法
		for(int i=0;i<10;i++){
			System.out.println(i);
		}
		
		//2.将循环变量声明在循环的外部
		int i = 0;
		for (; i < 10; i++) {
			System.out.println(i);
		}
		
		//3.不写循环条件,默认是true即死循环
		for(int i=0;;i++){
			System.out.println(i);
		}
		
		//4.将循环变量自增或自减写到for的{}内部
		for(int i=0;i<10;){
			System.out.println(i);
			i++;
		}
		
		//5.类似于while
		int i = 0;
		for(;i<10;){
			System.out.println(i);
			i++;
		}
		
		//6.什么都不写--死循环
		int i = 0;
		for(;;){
			System.out.println("死循环");
		}
	}

}
  • for练习:
/*
 * 指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
 * 在数学上,斐波纳契数列以如下被以递推的方法定义:
 * F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
 * 
 * 求前n位的和,不用递归和数组,用循环写
 */
public class Fibonacci {
	
	void fibonacci(int n){
		if(n == 1){
			System.out.println("和为1");
		}else if(n == 2){
			System.out.println("和为2");
		}else if(n > 2){
			int n1 = 1;
			int n2 = 1;
			int n3 = 0,sum = 2;
			//循环条件,不能是n次
			for(int i=0; i<n-2 ; i++){
				n3 = n1 + n2;
				sum += n3;
				
                                //移动n1和n2
				n1 = n2;
				n2 = n3;
			}
			System.out.println(sum);
		}
	}
	
	public static void main(String[] args) {
		Fibonacci fibonacci = new Fibonacci();
		fibonacci.fibonacci(5);
	}

}
  • 循环嵌套:

/*
 * 循环的嵌套不单指for循环,所有的循环都可以互相嵌套
 * 因为for循环使用场景最多,以for循环为例
 *
 * 1.外层循环执行一次,内层循环执行多次
 * 2.只有内层循环条件为false(使用到关键字),外层循环才会再次执行
 *
 * 三个关键字:
 * continue:跳出本次循环继续下次循环
 * break:跳出本层循环继续下层循环
 * 标签:若想跳出多层循环,用标签,即break后跟标签名
 * return:跳出方法体,不能轻易用,是用来停止方法的
 *
 * 停止JVM:System.exit(0);
 */

public class NestLoop {
	
	public static void main(String[] args) {
		
		//1.break
		for(int j=1;j<10;j++){
			for(int i=1;i<10;i++){
				if(i == 5) break;
				System.out.println(i);
			}
		}
		
		//2.标签
		EXIT_FLAG:for(int j=1;j<10;j++){
			for(int i=1;i<10;i++){
				if(i == 5) break EXIT_FLAG;//EXIT_FLAG:标签
				System.out.println(i);
			}
		}
		
		//3.continue
		//计算100-200之间所有不能被3整除的数
		for(int i=100;i<=200;i++){
			if(i%3 == 0){
				continue;
			}
			System.out.println(i);
		}
		
		//return
		for(int j=1;j<10;j++){
			for(int i=1;i<10;i++){
				if(i == 5) return;//此处停的是main方法
				System.out.println(i);
			}
		}
		
		//停止JVM
		System.exit(0);
		
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值