Java 基础语法学习笔记

news2024/11/19 20:37:11

目录

一、Java语言概述

1.1 Java 的出现

1.2 Java的主要特性

1.3 Java语言的特点

1.4 Java语言的核心机制

1.5 Java语言的环境搭建

 二、第一个Java程序

2.1 需要注意的问题

2.2 注释(comment)

 2.3 注意点:

2.4 Java API 的文档

2.5 第一个 Java 程序

三、Java基本语法

3.1  Java中的名称命名规范

 3.2 关键字(keyword)和保留字

 3.3 变量的使用

3.4 数据类型

​编辑

3.4.1 整数类型

3.4.2 浮点型变量

 3.4.3 字符类型

3.4.4 布尔类型

3.4.5 基本数据类型转换

3.4.6 字符串类型

​编辑

 3.4.7 强制类型转换

3.4.8 二进制

​编辑

四、流程控制语句

4.1 顺序结构

4.2 分支结构

4.3 循环结构 

4.3.1 for循环

 4.3.2 while 循环

 4.3.3 do...while循环

 4.3.4 练习题

 4.3.5 嵌套循环

4.3.6 break的使用

4.3.7 continue的使用

4.3.8 return的使用

​4.4 注意事项


一、Java语言概述

1.1 Java 的出现

Java之父 James Gosling,发明Java的原因是:C 语言缺少垃圾回收系统和可移植的安全性、分布程序设计和多线程功能等。

Java 是类C语言,Java 是一个纯粹的面向对象的程序设计语言。Java 舍弃了C语言中容易引起错误的指针(Java 中以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间。JDK 1.5又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱。

1.2 Java的主要特性

Java语言是易学的

Java语言是强制面向对象的

Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为 implements)

Java语言是分布式的

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(Java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

Java语言是健壮的

Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。(Java没有指针)

Java语言是安全的

Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。如:安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查。

Java语言是体系结构中立的

Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。

Java语言是解释型的

Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统的解释器中运行

Java是性能略高的

Java语言是原生支持多线程的 

在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建

1.3 Java语言的特点

面向对象

  • 两个基本概念:类、对象
  • 三大特性:封装、继承、多态

健壮性

  • 吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制

跨平台性 

  • 跨平台性:通过Java语言编写的应用程序在不同的系统平台上都可以运行。“Write once,Run Anywhere”
  • 原理:只要在需要运行java应用程序的操作系统上,先安装一个Java虚拟机(JVM Java Virtual Machine)即可。由JVM来负责Java程序在该系统中的运行。

1.4 Java语言的核心机制

Java虚拟机(Java Virtual Machine)

  • JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器。
  • 对不同的平台,有不同的虚拟机。
  • 只有某平台提供了对应的java虚拟机,java程序才可在此平台运行
  • Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”
  • .java——》(编译).class——》执行
  • 硬件——》操作系统——》JVM——》字节码文件——》用户User

垃圾收集机制(Garbage Collection)

  • 不再使用的内存空间以回收——垃圾回收
    • 在C/C++等语言中,由程序员负责回收无用内存
    • Java语言消除了程序员回收无用内存空间的责任,它提供一种系统级线程跟踪存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储空间。
  • 垃圾回收在Java程序运行过程中自动运行,程序员无法精确控制和干预
  • Java程序还会出现内存泄漏和内存溢出问题

1.5 Java语言的环境搭建

JDK(Java Development Kit  Java开发工具包)

JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用再单独安装JRE了

  • JDK中的开发工具有:编译工具(javac.exe)、打包工具(jar.exe)等

JRE(JavaRutime Environment  Java运行环境)

JRE包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可 

使用JDK的开发工具完成的java程序,交给JRE去运行 

JDK、JRE、JVM的关系是什么?

  • JDK = JRE + 开发工具集(例如Javac编译工具等)
  • JRE = JVM + JavaSE标准类库

 二、第一个Java程序

2.1 需要注意的问题

  • 类文件名写错,当文件名与类名不一致时,要小心
  • 类文件不在当前路径下,或者不再classpath指定路径下
  • 声明为public的类应与文件名一致,否则编译失败
  • 编译失败时,注意错误出现的行数,再到源代码中指定位置改错

2.2 注释(comment)

用于注解说明解释程序的文字就是注释

Java中的注释类型

  • 单行注释
  • 多行注释
  • 文档注释(java特有)

注释的作用:

  • 提高了代码的阅读性;调试程序的重要方法

文档注释

 2.3 注意点:

  • Java语言严格区分大小写
  • 一个源文件中最多只能有一个public类。其他类的个数不限,如果源文件包含一个public类,则文件名必须按该类名命名。

2.4 Java API 的文档

  • API(Application Programming Interface,应用程序编程接口)是Java提供的基本编程接口
  • Java语言提供了大量的基础类,因此Oracle也为这些基础类提供了相应的API文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法。
  • 下载API

2.5 第一个 Java 程序

public class HelloWorld {
    // 程序的入口
	public static void main(String[] args) {
        // 打印 HelloWorld
		System.out.println("HelloWorld");
	}

}

三、Java基本语法

3.1  Java中的名称命名规范

 标识符(identifier)

 3.2 关键字(keyword)和保留字

 3.3 变量的使用

3.4 数据类型

3.4.1 整数类型

 整型变量的声明、赋值、使用

public class UseOfVariables {
	public static void main(String[] args) {
		// 先声明,后赋值
		int number1;
		number1 = 10;
		
		// 声明并直接赋值
		int number2 = 20;
		
		int number3 = number1 + number2;
		System.out.println("Number3=" + number3);
	}

}

3.4.2 浮点型变量

 3.4.3 字符类型

3.4.4 布尔类型

3.4.5 基本数据类型转换

3.4.6 字符串类型


public class StringTest {
	public static void main(String[] args) {
		int no = 10;
		// 字符串类型声明并赋值
		String str = "abcdef";
		String str1 = str + "xyz" + no;
		
		System.out.println("str1=" + str1);
		
		str1 += "123";
		System.out.println("str1=" + str1);
		
		// 声明并赋值字符类型变量 c
		char c = '国';
		// 声明定义并赋值 浮点数 double 类型 变量 pi
		double pi = 3.14;
		str1 += pi;
		// 声明并定义布尔类型变量 b,赋值 为 false
		boolean b = false;
		
		str1 += b;
		System.out.println("str1=" + str1);
		str1 += c;
		System.out.println("str1=" + str1);
	}

}

 3.4.7 强制类型转换

加 小括号

3.4.8 二进制

四、流程控制语句

4.1 顺序结构

程序从上到下逐行执行,中间没有任何判断和跳转

4.2 分支结构

  • 根据条件,选择性地执行某段代码
  • 有 if...else 和 switch-case 两种分支语句

 


public class IfelseTest {
	public static void main(String[] args) {
		int age = 75;
		if(age<0) {
			System.out.println("不可能");
		} else if(age>250) {
			System.out.println("是个妖怪");
		} else {
			System.out.println("人家芳龄" + age + ",马马虎虎啦");
		}
	}

}

switch-case

public class SwitchCaseTest {
	public static void main(String[] args) {
		int i = 1;
		switch (i) {
		case 0:
			System.out.println("zero");
			break;
		case 1:
			System.out.println("one");
			break;
		default:
			System.out.println("default");
			break;
		}
	}

}

public class SwitchCaseTestSeason {
	public static void main(String[] args) {
		String season = "summer";
		switch (season) {
		case "spring":
			System.out.println("春暖花开");
			break;
		case "summer":
			System.out.println("夏日炎炎");
			break;
		case "autumn":
			System.out.println("秋高气爽");
			break;
		case "winter":
			System.out.println("冬雪皑皑");
			break;
		default:
			System.out.println("季节输入有误!");
			break;
		}
	}
}

 

 

4.3 循环结构 

  • 根据循环条件,重复性的执行某段代码
  • 有while、do...while、for三种循环语句
  • 注意:JDK1.5提供了foreach循环,方便的遍历集合、数组元素

4.3.1 for循环

package unitOne01;

public class ForCirculate {
	public static void main(String[] args) {
		int result = 0;
		for(int i = 1; i <= 100; i++) {
			result += i;
		}
		System.out.println("result="+ result);
	}

}

 4.3.2 while 循环

package unitOne01;

public class WhileLoop {
	public static void main(String[] args) {
		int result = 0;
		int i = 1;
		while (i <= 100) {
			result += i;
			i++;
		}
		System.out.println("result="+ result);
	}
}

 4.3.3 do...while循环

package unitOne01;

public class DoWhileLoop {
	public static void main(String[] args) {
		// 声明并定义两个变量 result、i,并给它们赋初值 result = 0, i = 1
		int result = 0, i = 1;
		do {
			result += i;
			i++;
		} while (i <= 100);
		System.out.println("result=" + result);
	}
}

 4.3.4 练习题

package unitOne01;

import java.util.Scanner;
/*
 * 从键盘读入个数不确定的整数,
 * 并判断读入的正数和负数的个数,输入为0时结束程序。
 */

public class PositiveNegativeLoopTest {
	public static void main(String[] args) {
		// 键盘输入的方法 Scanner
		Scanner scanner = new Scanner(System.in);
		// 统计正数的个数
		int positiveNumber = 0;
		// 统计负数的个数
		int negativeNumber = 0;
		for(;;) { // while(true)
			System.out.println("请输入一个整数:");
			System.out.println("输入 0 结束游戏!");
			int z = scanner.nextInt();
			if(z>0) {
				positiveNumber++;
			} else if(z<0) {
				negativeNumber++;
			} else {
				break;
			}
		}
		System.out.println("正数的个数为:"+ positiveNumber);
		System.out.println("负数的个数为:"+ negativeNumber);
	}
}

 4.3.5 嵌套循环

4.3.6 break的使用

package unitOne01;

public class UseBreakStatement {
	public static void main(String[] args) {
		for (int i = 0; i < 10; i++) {
			if (i == 3) {
				break;	
			}
			System.out.println("i="+ i);
		}
		System.out.println("Game Over!");
	}
}

4.3.7 continue的使用

 

package unitOne01;

public class UseContinueStatement {
	public static void main(String[] args) {
		for (int i = 0; i < 10; i++) {
			if (i == 3) {
				continue;
			}
			System.out.println("i="+ i);
		}
		System.out.println("游戏结束");
	}
}

4.3.8 return的使用

 4.4 注意事项

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/553989.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python+django智慧办公hr招聘辅助管理系统vue

随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;智慧办公hr招聘辅助管理系统当然也不能排除在外。智慧办公hr招聘辅助管理系统是以实际运用为开发背景&#xff0c;运用软件工程…

深度学习框架-Keras:特点、架构、应用和未来发展趋势

引言 深度学习是一种新兴的技术&#xff0c;已经在许多领域中得到广泛的应用&#xff0c;如计算机视觉、自然语言处理、语音识别等。在深度学习中&#xff0c;深度学习框架扮演着重要的角色。Keras是一种广泛使用的深度学习框架&#xff0c;它在许多方面都有所改进&#xff0c…

云计算基础——云计算与移动互联网、物联网

8.1 云计算与移动互联网 8.1.1 移动互联网的发展概况 移动互联网的发展概况 移动互联网是指以宽带IP为技术核心&#xff0c;可同时提供语音、数据、多媒体等业务服务的开什么是移动互联网?放式基础电信网络&#xff0c;从用户行为角度来看&#xff0c;移动互联网广义上是指用…

openldap介绍以及使用

参考文献&#xff1a;openldap介绍和使用 基本概念 官网&#xff1a;https://www.openldap.org 官方文档&#xff1a;https://www.openldap.org/doc LDAP是一个开放的&#xff0c;中立的&#xff0c;工业标准的应用协议&#xff0c;通过IP协议提供访问控制和维护分布式信息的…

目标检测 YOLOv5 开源代码项目调试与讲解实战土堆 课程笔记

P4 P5 主要讲解了 detect.py 中的参数的使用 如何利用 YOLOv5 进行预测&#xff08;一&#xff09;_哔哩哔哩_bilibili 如何利用YOLOv5进行预测&#xff08;二&#xff09;_哔哩哔哩_bilibili &#xff08;一&#xff09;weight&#xff1a;代码如下 parser.add_argument(--w…

VTKmimics Calculate Parts

前言&#xff1a;本博文主要研究mimics中Calculate Parts所采用的方法以及VTK中三维重建的方法&#xff0c;希望对各位小伙伴有所帮助&#xff0c;谢谢&#xff01; mimics-Calculate parts - Interpolation Gray Interpolation 灰度值插值是一种真正的3D插值&#xff0c;它考…

【C++学习第十一讲】C++数据类型

文章目录 一、编程语言中的数据类型1.1 整型&#xff08;Integer&#xff09;1.2 浮点型&#xff08;Floating-Point&#xff09;1.3 字符型&#xff08;Character&#xff09;1.4 布尔型&#xff08;Boolean&#xff09;1.5 数组&#xff08;Array&#xff09;1.6 字符串&…

TitanIDE:环境安装部署教程

随着市场需求的迅速增长和技术的不断发展&#xff0c;云原生不仅仅是一种技术&#xff0c;更是一种思想。它通过容器化、微服务化、自动化等技术手段&#xff0c;推动了应用程序设计和交付的转变&#xff0c;使应用程序的开发、测试、部署和管理变得更加高效和灵活。 随着市场需…

【多线程】| 线程冲突解决方案

目录 &#x1f981; 线程同步1.什么是线程冲突&#xff1f;2.什么是线程同步&#xff1f;3.解决线程同步的方案3.1语法结构3.2synchronized使用 &#x1f981; synchronized详细用法1. 使用this作为线程锁对象1.1 语法结构&#xff1a;1.2 使用说明 2. 使用字符串作为线程对象锁…

lwIP更新记04:TCP 初始序列号

从 lwIP-2.0.0 开始&#xff0c;可以自定义 TCP 报文段的初始序列号。 TCP 报文段首部有一个序列号字段&#xff0c;它是一个32位的计数器&#xff0c;从 0 到 4294967295&#xff0c;它的值为当前报文段中第一个数据的字节序号。TCP 在建立连接的时候需要初始序列号&#xff…

JVM系列-第11章-垃圾回收相关概念

垃圾回收相关概念 System.gc() 的理解 在默认情况下&#xff0c;通过System.gc()者Runtime.getRuntime().gc() 的调用&#xff0c;会显式触发Full GC&#xff0c;同时对老年代和新生代进行回收&#xff0c;尝试释放被丢弃对象占用的内存。 然而System.gc()调用附带一个免责声…

小航助学2022年NOC初赛图形化(小高组)(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSDN博客 单选题3.0分 删除编辑 答案:C 第1题如果要控制所有角色一起朝舞台区右侧移动&#xff0c;下面哪个积木块是不需要的&#xff1f; A…

微签助力中融基金电子文件安全高效签章

中融基金重安全&#xff0c;炼丹炉里炼微签 这次讲一个微签在炼丹炉里炼出了火眼金睛的故事。 先看一个数字。 金融隐私泄露事件大约以每年35&#xff05;的数据在增长。 数字来自《中国银行保险报》与亚信网络安全产业技术研究院发布的《金融行业网络安全白皮书》。 大数据时…

「车型分析」控制系统典型应用车型 —— 辊筒AGV

辊筒AGV (Roller conveyor ) 是一种常见的AGV机器人类型&#xff0c;它利用辊筒和轮子在巷道中实现货物的搬运和运输&#xff0c;可实现托盘物品的卸载和运输等功能, 具有更高的灵活性、适应性和效率。本文将基于这款市场上常见的AGV进行一次简单的介绍。 1 车型介绍: 辊筒AGV…

深度学习中必备的算法:神经网络、卷积神经网络、循环神经网络

深度学习是一种新兴的技术&#xff0c;已经在许多领域中得到广泛的应用&#xff0c;如计算机视觉、自然语言处理、语音识别等。在深度学习中&#xff0c;算法是实现任务的核心&#xff0c;因此深度学习必备算法的学习和理解是非常重要的。 本文将详细介绍深度学习中必备的算法…

2023彩虹易支付最新原版安装教程(内附源码)

此源码已通过检查&#xff0c;确认无后门&#xff0c;且所有代码开源&#xff0c;无加密文件。 测试日期 2023年5月21日 源码已扫描无后门&#xff0c;不放心的也可以自己再去扫描一遍 2023年5月22日 各个功能接口测试完毕&#xff0c;均可用 选中下方可查看下载链接 http…

gcc、makefile和git(二)

简介 现在讲述如何写 makefile 的文章很多&#xff0c;从几页的简易版到几十页、几百页的详细版都有。Makefile 有自己的书写格式、关键字、函数、隐含规则&#xff0c;像C语言一样灵活多变、功能强大。在Makefile中还可以使用系统shell所提供的任何命令来完成想要的工作&#…

国资油企能向民营市场借鉴些什么?

在中国石油集团召开的全面深化改革领导小组第四十三次会议上&#xff0c;集团公司董事长、党组书记、全面深化改革领导小组组长戴厚良强调&#xff1a;要深入推进公司治理体系和治理能力现代化&#xff0c;推进信息化、数字化和智能化工作。实现制度流程化、流程信息化。立足长…

GEE土地利用产品汇总

一、ESA产品&#xff1a; 10米分辨率&#xff0c;目前只有2020年和2021年的数据 &#xff08;1&#xff09;ESA WorldCover 10m v100&#xff08;只有2020年数据&#xff09; 代码&#xff1a; var dataset ee.ImageCollection(ESA/WorldCover/v100).first();var visualizat…

写给Android工程师的 Github CI 快速指北

背景 关于 CI/CD &#xff0c;在2023年的今天&#xff0c;基本所有技术团队或多或少都会使用&#xff0c;其很大程度上减轻了我们的冗余重复工作&#xff0c;从而简化我们的工作流程。 不过对于大多数客户端工程师而言&#xff0c;其实 CI 这个词还是比较陌生。当然并不是说&…