JavaSE(一)--Java语法

news2024/10/2 8:37:30

!!!本文适合有c和c++基础的,通过比较c++和java的不同,快速入门java。!!!
这篇文章主要是介绍和c++不同的地方,没说的知识点按照c++写就行了。

零.整体的结构

Java是面向对象的程序。首先对于Java来说一个文件就是一个类。它和c++首先映入眼帘的不同就是不可以在类外定义函数,它所有的函数(包括主函数都要定义在类里面)。

1.主函数

比如在一般只有一个文件的话c++结构是这样的:

#include<iostream>
using namespace std;
int main(){
	//代码
    return 0;
} 

但是Java的话main函数也要放在类里面:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        //代码
    }
}

注:public static void main(String[] args) {}是主函数(或者叫程序入口)的唯一格式,不能写成其他形式。类的话命名随意。

2.函数/方法

【1】c++中允许在类外定义方法,比如

#include<iostream>
using namespace std;
void print(){
	cout<<"666";
}
int main(){
	print();
	return 0;
} 

在Java中应该这么写:

import java.util.Scanner;
public class Main {
    public static void speak(){
        //下面这句话是Java的控制台输出语句,相当于printf或者cout
        System.out.println("666");
    }
    private static void main(String[] args) {
        speak();
    }
}

注意因为main函数为静态方法,学过c++都知道,静态方法属于类中的所有实例所共有,并且只能调用静态的变量和方法,所以speak函数必须是static才能被main函数调用,至于是要public还是private看你自己。

【2】当然c++也可以在类内定义方法:

#include<iostream>
using namespace std;
class Person{
	public:
		void speak(){
			cout<<"666";
		}
};
int main(){
	Person person;
	person.speak();
	return 0;
} 

一.注释(和c一样)

单行注释://
多行注释:/*   */
文档注释:/**    **/

二.字面量和变量类型

变量类型--四类八种

和c++基本一致,不一样的是多了像byte之类类型,少了像long double之类的类型。

3.输入输出

输出:System.out.println方法

//输出字符串字面量
System.out.println("我可以输出任何变量哦");
//输出整型字面量
System.out.println(666);
//输出整型变量
int a=0;
System.out.println(a);
//注意long类型的数据值后面一般需要加个L或l作为后缀。
long n=9999999999L;
System.out.println(n);
//注意float类型的数据值后面一般需要加个F作为后缀。
float f=10.1F;
System.out.println(f);

输入:用Scanner类

//建立一个调用Scanner的有参构造建立一个Scanner对象
Scanner scanner=new Scanner(System.in);
///调用其中的方法进行输入,其中nextInt方法是用来输入整数的
int number=sc.nextInt();

4.关系运算符

和c++几乎一样,只有些许不同,这里列举几个不同点。
(1)%也能用于小数运算
(2)bool类型不能用于算数计算
(3)java中对的数据类型转换检查严格

下面的代码在c++中是可以的,但在java中就会报错。

int a=1.1;

5.分支和循环语句

写法与c++一模一样。

6.引用数据类型

基本数据类型--上面讲的四类八种

引用数据类型--就是java中表示对象的数据类型。这些对象类型的变量并不直接存储数据,而是存储对象数据所在内存地址的引用。相当于c++中的引用。
因为java和c++不同的是,java创建对象都是在堆区new出来的,所以都使用引用数据类型来操作对象。

例如:
在c++中可以

Person person;

但是java中必须用new来创建对象

Person person=new Person();

这里的Person与c++的Person不一样,它代表引用,就像c++的Person*,不同的是一个是引用而一个是指针。

​Person* person=new Person();

七.数组

在java中,数组是一种对象。
创建数组

public static void main(String[] args) {
    //int数组的类型名叫做int[],所以一般是这样写的
    int[] array1=new int[3];
    //但是如c++之类的语言一般习惯用int array2[]这种格式,所以也可以这么写
    int array2[]=new int[3];
    //当然了,赋值的话还可以用数组专门用于赋值的初始化列表
    int[] array3=new int[]{11,22,33};
    //也可以简化写成
    int[] array4={11,22};
}

使用的话和c几乎一样,但还是有不同。
(1)因为是变量,所以java里面的数组有属性size可以来获取数组的长度,如
array3.length。这个比较经常在循环中用到。
(2)还有数组越界,在java中不会纵容数组越界,一越界会抛出异常。

九.方法

和c,c++差不多,就像第零条所讲的,最大的不同就是所有方法,包括main方法都得在类里面定义。

八.其他

1.增强for

【1】优点


Java 中的增强 for 循环(也称为 for-each 循环)相比于传统的 for 循环
优点:
1. 简洁,不需要索引
2. 安全性:防止越界(没有使用索引)和修改集合中的元素。
缺点:
1. 无法获取当前元素的索引:增强 for 循环没有提供内置的索引访问机制,如果需要获取当前元素的索引,仍然需要使用传统 for 循环。
2. 无法修改集合中的元素:增强 for 循环只能读取集合中的元素,无法修改元素的值或删除元素。

需要注意的是,增强for并不会提高程序的运行效率。在底层实现上,增强 for 循环其实还是通过迭代器或索引来遍历集合或数组的。

【2】增强 for 循环的语法

for (元素类型 元素变量 : 遍历对象) {
    // 循环体
}

其中,元素类型表示遍历对象中元素的类型,元素变量是用于接收每个元素值的变量名,遍历对象可以是数组或实现了 Iterable 接口的集合类(如 List、Set 等)。

下面是几个示例:

1. 遍历数组:

int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
    System.out.println(number);
}

2. 遍历集合:

List<String> fruits = Arrays.asList("apple", "banana", "orange");
for (String fruit : fruits) {
    System.out.println(fruit);
}

3. 遍历字符串:

String message = "Hello";
for (char ch : message.toCharArray()) {
    System.out.println(ch);
}

在以上示例中,每次迭代时,元素变量(如 number、fruit、ch)都会被赋值为遍历对象中的一个元素值,然后执行循环体内的代码。循环将按顺序遍历遍历对象中的每个元素,直到遍历完成。

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

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

相关文章

Python 套接字编程完整指南

推荐&#xff1a;使用 NSDT场景编辑器 快速搭建3D应用场景 连接设备以交换信息是网络的全部意义所在。套接字是有效网络通信的重要组成部分&#xff0c;因为它们是用于通过本地或全球网络以及同一台计算机上的不同进程在设备之间传输消息的基本概念。它们提供了一个低级接口&am…

Java程序员学vue3最好的方式就是搭建后台管理模板

前言 作为Java程序员&#xff0c;vue3还是有必要学的&#xff0c;毕竟是国内最受欢迎的前端JS框架&#xff0c;你现在接手的项目&#xff0c;前端部分几乎都会和vue沾边&#xff0c;尤其是中小企业。 vue3作为新的大版本&#xff0c;相较于vue2改动还是很多的&#xff0c;目前企…

Kali Linux渗透测试技术介绍【文末送书】

文章目录 写在前面一、什么是Kali Linux二、渗透测试基础概述和方法论三、好书推荐1. 书籍简介2. 读者对象3. 随书资源 写作末尾 写在前面 对于企业网络安全建设工作的质量保障&#xff0c;业界普遍遵循PDCA&#xff08;计划&#xff08;Plan&#xff09;、实施&#xff08;Do…

基于Python开发的玛丽大冒险小游戏(源码+可执行程序exe文件+程序配置说明书+程序使用说明书)

一、项目简介 本项目是一套基于Python开发的玛丽冒险小游戏程序&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含&#xff1a;项目源码、项目文档等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xf…

【PCL-11】提取平面上层的目标物,剔除平面下层目标物

因项目需求,需提取平面上的物体,不提取平面下的物体,尝试采用超体聚类+LCCP分割的方式,但由于上层点云模型一侧有空洞,导致分割效果不理想。 这里采用pcl::ExtractPolygonalPrismData类,实现平面上物体的提取。 pcl::ExtractPolygonalPrismData类是通过设定处于同一平面模…

对于html和css初学者,你有什么值得推荐的简单的网页适合练习?

前言 html和css方面个人认为主要是在于css的学习&#xff0c;变化最多的也在于css&#xff0c;下面主要是介绍一些css相关的练习网站及一些项目&#xff0c;希望对你有帮助~ 网站推荐 1、CODEPEN 代码与所展示的页面相互对应&#xff0c;你可以在上面找到其他人已经写好的de…

胖小酱之不龟手之药寓言故事

宋国有个人善于炼制一种预防皮肤冻裂的药膏。在冬天如果把这种药膏涂在手上的话就能够防止手冻裂&#xff0c;所以他家祖祖辈辈就靠冬天的时候&#xff0c;在河边把这些药膏卖给洗衣服的人们来为生。 有个外地人听说他们家善于炼制这种药膏&#xff0c;便寻上门来&#xff0c;情…

同旺科技USB to I2C 适配器烧写 Arduino 模块

所需设备&#xff1a; 内附链接 1、同旺科技USB to I2C 适配器 2、Arduino 模块 硬件连接&#xff1a; 用同旺科技USB to I2C 适配器连接芯片的TX、RX、GND; 打开Arduino IDE编辑工具&#xff0c; 点击“上传”按钮&#xff0c;完成程序的编译和烧录&#xff1b;

RabbtiMQ的安装与在Springboot中的使用!!!

一、安装Erlang与Rabbitmq 安装教程本教程是在centos8下试验的&#xff0c;其实linux系统的都差不多RabbitMQ官方&#xff1a;Messaging that just works — RabbitMQRabbitMQ是开源AMQP实现&#xff0c;服务器端用Erlang语言编写&#xff0c;Python、Ruby、 NET、Java、JMS、c…

使用Python操作MySQL数据库

准备 安装Python,打开命令提示符&#xff0c;我已经安装成功了 安装Mysql我也安装成功了 我在用户的86188下利用记事本写了一个.py的python代码&#xff0c;在命令提示符中运行 Python自带的集成式开发环境,在电脑搜索框直接IDEA你也会打开 一&#xff0c;建立连接 使用Python…

AR眼镜: 与人并行的智能伙伴

AR眼镜&#xff1a; 与人并行的智能伙伴 增强现实&#xff08;Augmented Reality&#xff0c;AR&#xff09;眼镜是一种将虚拟信息与真实世界进行融合的设备&#xff0c;通过眼镜或头戴设备让用户能够看到真实世界&#xff0c;并在其上叠加数字内容和图像。目前工业级AR眼镜已…

python考研志愿填报模拟系统vue

本系统提供给管理员对学生、院校、研究生信息、专业信息、学院信息等诸多功能进行管理。本系统对于学生输入的任何信息都进行了一定的验证&#xff0c;为管理员操作提高了效率&#xff0c;也使其数据安全性得到了保障。本考研志愿填报模拟系统以Django作为框架&#xff0c;B/S模…

2022蓝帽杯半决赛

2022蓝帽杯取证题目解压密码附件 链接&#xff1a;https://pan.baidu.com/s/1AS0wVdjZxt46zaDcDzxdaQ 提取码&#xff1a;scpc –来自百度网盘超级会员V4的分享 解压密码7(G?fu9A8sdgfMsfsdrfE4q6#cf7af0fc1c 参考奇安信攻防社区-第六届“蓝帽杯”半决赛取证题目官方解析 20…

【项目测试报告】博客系统 + 在线聊天室

文章目录 一、项目介绍1.1 核心技术1.2 核心功能1.3 技术亮点1.4 前端页面设计登录页面注册页面博客广场页面搜索结果页面个人博客页面个人中心页面我的关注/粉丝页面聊天室页面写博客页面我的草稿修改博客页面博客详情页他人博客主页 二、功能测试2.1 登录测试用例2.2 注册测试…

OpenAI科学家Jason Wei专访:思维链灵感来源于冥想丨智源独家

导读 在大模型的研发道路上&#xff0c;思维链、指令微调和智能涌现等关键思想备受关注。正是思维链技术&#xff08;Chain of Thought&#xff09;让大模型能够涌现出一系列神奇的能力&#xff0c;成为了现代大语言模型产生「涌现」的底层技术。思维链旨在通过向大语言模型展示…

百度飞浆OCR识别表格入门python实践

1. 百度飞桨&#xff08;PaddlePaddle&#xff09; 百度飞桨&#xff08;PaddlePaddle&#xff09;是百度推出的一款深度学习平台&#xff0c;旨在为开发者提供强大的深度学习框架和工具。飞桨提供了包括OCR&#xff08;光学字符识别&#xff09;在内的多种功能&#xff0c;可…

【C++】内联函数 ① ( 内联函数引入 | 内联函数语法 )

文章目录 一、内联函数引入1、内联函数引入2、代码示例 - 宏代码片段 与 内联函数 二、内联函数语法1、内联函数语法说明2、代码示例 - 内联函数基本语法 一、内联函数引入 1、内联函数引入 " 内联函数 " 是 C 语言中的一种特殊函数 , 其目的是为了提高程序的执行效率…

vision transformer 详解

文章链接&#xff1a;https://arxiv.org/abs/2010.11929 代码地址&#xff1a;GitHub - google-research/vision_transformer Pytorch实现代码&#xff1a; https://github.com/WZMIAOMIAO/deep-learning-for-image-processing/tree/master/pytorch_classification/vision_tran…

你还在找淘宝商品信息查询的接口吗?

你还在找淘宝商品信息查询的接口吗&#xff1f;&#xff0c;不用找了&#xff0c;我这有&#xff0c;免费测试 在很多行业&#xff0c;比如淘客、商品采集、刊登、数据分析行业都需要用到相关的商品接口&#xff0c;但是官方一般又没有开放这些接口&#xff0c;怎么办&#xff…

原生Js Canvas去除视频绿幕背景

Js去除视频背景 注&#xff1a; 这里的去除视频背景并不是对视频文件进行操作去除背景 如果需要对视频扣除背景并导出可以使用ffmpeg等库&#xff0c;这里仅作播放用所以采用这种方法 由于uniapp中的canvas经过封装&#xff0c;且 uniapp 的 drawImage 无法绘制视频帧画面&…