当前位置: 首页 > news >正文

Java-语法基础1-[与C语言的异同]

Java语法基础(从入门到循环结构)

一、Java程序基本结构

Java程序示例:

// 1. 定义类- [ ] 
public class HelloWorld {// 2. 主方法 - 程序入口
public static void main(String[] args) {// 3. 输出语句System.out.println("Hello, World!");// 4. 变量声明int number = 10;// 5. 调用方法printNumber(number);
}// 6. 自定义方法
public static void printNumber(int num) {System.out.println("数字是: " + num);
}

}

与C语言对比:

特性 | Java | C语言
文件扩展名 | .java | .c
编译命令 |"javac 文件名.java" |"gcc 文件名.c"
运行命令 |"java 类名" |"./a.out"
入口方法 |"main(String[] args)"|"main()"
标准输出 |"System.out.println()"|"printf()"

二、变量和数据类型

  1. 基本数据类型

Java程序示例:

// Java 8种基本数据类型
byte b = 100;         // 1字节,-128~127
short s = 1000;       // 2字节
int i = 10000;        // 4字节(默认整型)
long l = 100000L;     // 8字节,加L后缀float f = 3.14f;      // 4字节,加f后缀
double d = 3.14159;   // 8字节(默认浮点型)char c = 'A';         // 2字节,Unicode字符
boolean flag = true;  // 1位,true/false
  1. 与C语言数据类型对比

C语言程序示例:

// C语言常见数据类型
char c = 'A';         // 1字节
short s = 1000;       // 2字节
int i = 10000;        // 4字节
long l = 100000L;     // 4或8字节
float f = 3.14f;      // 4字节
double d = 3.14159;   // 8字节// C语言没有boolean类型,用0/1表示(
int flag = 1;         // 1表示真

主要差异:

  • Java的"char"是2字节(Unicode),C语言是1字节(ASCII)
  • Java有独立的"boolean"类型,C语言用整型替代
  • Java所有数据类型长度固定,与平台无关

三、运算符

Java运算符(与C语言基本相同):
Java程序示例:

// 1. 算术运算符
int a = 10, b = 3;
int sum = a + b;      // 13
int diff = a - b;     // 7
int product = a * b;  // 30
int quotient = a / b; // 3(整数除法)
int remainder = a % b; // 1// 2. 关系运算符
boolean isEqual = (a == b);      // false
boolean isGreater = (a > b);      // true
boolean isLessOrEqual = (a <= 10); // true// 3. 逻辑运算符
boolean x = true, y = false;
boolean andResult = x && y;      // false
boolean orResult = x || y;       // true
boolean notResult = !x;          // false// 4. 赋值运算符
a += 5;     // a = a + 5
a++;        // 自增
b--;        // 自减

四、控制结构

  1. 条件语句(if-else)

Java语法:

if (条件1) {
// 条件1为真时执行
} else if (条件2) {
// 条件2为真时执行
} else {
// 以上条件都不满足时执行
}

对比示例:

// Java
int score = 85;
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 60) {
System.out.println("及格");  // 输出这个
} else {
System.out.println("不及格");
}

// C语言

int score = 85;
if (score >= 90) {printf("优秀\n");
} else if (score >= 60) {printf("及格\n");  // 输出这个
} else {printf("不及格\n");
}

差异:Java的条件必须是布尔表达式

  1. switch语句

Java语法:

switch (表达式) {
case 值1:// 代码块1break;
case 值2:// 代码块2break;
default:// 默认代码块
}

对比示例:

 // Java
int day = 3;
switch (day) {case 1:System.out.println("星期一");break;case 2:System.out.println("星期二");break;case 3:System.out.println("星期三");  // 输出这个break;default:System.out.println("其他");
}// C语言
int day = 3;
switch (day) {case 1:printf("星期一\n");break;case 2:printf("星期二\n");break;case 3:printf("星期三\n");  // 输出这个break;default:printf("其他\n");
}

Java 12+新特性(箭头表达式):

// Java 12+支持
int day = 3;
String dayName = switch (day) {case 1 -> "星期一";case 2 -> "星期二";case 3 -> "星期三";default -> "其他";
};
System.out.println(dayName);

五、循环结构(详细对比)

  1. while循环

// Java

int i = 0;
while (i < 5) {System.out.println("i = " + i);i++;
}
// 输出: 0,1,2,3,4// C语言
int i = 0;
while (i < 5) {printf("i = %d\n", i);i++;
}

关键差异:Java的"i < 5"必须返回布尔值

  1. do-while循环

// Java - 至少执行一次

int count = 0;
do {System.out.println("执行次数: " + (count + 1));count++;
} while (count < 3);// C语言
int count = 0;
do {printf("执行次数: %d\n", count + 1);count++;
} while (count < 3);
  1. for循环

// Java基础for循环

for (int j = 0; j < 5; j++) {System.out.println("j = " + j);
}// C语言
for (int j = 0; j < 5; j++) {printf("j = %d\n", j);
}
  1. 增强for循环(Java特有)

// Java增强for循环 - 遍历数组

int[] numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {System.out.print(num + " ");  // 输出: 1 2 3 4 5
}
System.out.println();// 遍历字符串
String str = "Hello";
for (char ch : str.toCharArray()) {System.out.print(ch + " ");  // 输出: H e l l o
}

六、循环控制语句

  1. break语句

// 跳出循环

for (int i = 0; i < 10; i++) {if (i == 5) {break;  // 当i=5时跳出循环}System.out.println(i);  // 输出:0,1,2,3,4
}
  1. continue语句

// 跳过本次循环

for (int i = 0; i < 5; i++) {if (i == 2) {continue;  // 跳过i=2的情况}System.out.println(i);  // 输出:0,1,3,4
}
  1. 带标签的break/continue(Java特有)

// 标签用于多层循环

outer:  // 标签
for (int i = 1; i <= 3; i++) {for (int j = 1; j <= 3; j++) {if (i * j > 4) {break outer;  // 跳出外层循环}System.out.println(i + " * " + j + " = " + (i * j));}
}

七、综合示例

示例1:计算1-100的偶数和

// Java实现
int sum = 0;
for (int i = 1; i <= 100; i++) {if (i % 2 == 0) {  // 判断是否为偶数sum += i;}
}
System.out.println("1-100的偶数和: " + sum);// C语言实现
int sum = 0;
for (int i = 1; i <= 100; i++) {if (i % 2 == 0) {  // 判断是否为偶数sum += i;}
}
printf("1-100的偶数和: %d\n", sum);

示例2:九九乘法表

// Java实现
for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {System.out.print(j + "×" + i + "=" + (i * j) + "\t");}System.out.println();  // 换行
}

八、从C到Java的关键差异总结

  1. 数据类型:
    • Java有明确的boolean类型
    • Java的char是Unicode(2字节),C的char是ASCII(1字节)
    • Java基本数据类型长度固定
  2. 条件表达式:
    • Java必须是布尔类型
    • C语言可以是任何数值类型(0为假,非0为真)
  3. 循环结构:
    • 基础语法高度相似
    • Java有增强for循环(foreach)
    • Java支持带标签的break/continue
  4. 编译运行:
    • Java:编译为字节码,在JVM上运行
    • C:编译为机器码,直接运行
http://www.jsqmd.com/news/492672/

相关文章:

  • Phi-3-vision-128k-instruct可部署方案:单卡3090/4090高效运行128K视觉模型
  • Navicat数据同步实战:从单向合并到双向协同
  • 实测分享:Ollama部署translategemma-27b-it图文翻译模型,效果惊艳
  • B003 找循环节 建图 ABC167D
  • CAN总线滤波秘籍:SJA1000的验收滤波器配置全解析(BasicCAN vs PeliCAN模式)
  • 短链接生成器架构解密:62 进制编码 + 分布式 ID,如何让 6 位字符支撑 568 亿个网址?
  • JetBrains IDE试用期管理工具:从痛点到解决方案的完整指南
  • Ollama部署Llama-3.2-3B避坑指南:常见问题与解决方案
  • 都在用 OpenClaw 跑 Skill,但你写的“技能”为什么总让 AI 频繁罢工?
  • uni.createInnerAudioContext音频播放全攻略:从基础使用到duration获取异常处理
  • 简单研究一下 shipfast 的收益排行榜上的 SaaS 网站都是干什么的(转)
  • 实时口罩检测-通用应用指南:智能考勤与公共卫生管理解决方案
  • 开箱即用:Hunyuan-MT 7B翻译镜像,原文输入→一键翻译→实时展示
  • 关于 Amazon Linux 2023 (AL2023) 默认情况下确实没有 /var/log/secure 文件的解决方法
  • Vivado 2024.2编译提速秘籍:实测32线程设置与16线程性能天花板
  • Spring AI + RAG 构建电商智能客服:从 PDF 文档解析到精准问答的全链路实战
  • gte-base-zh效果对比图谱:t-SNE+UMAP双视角展示中文语义空间结构
  • 酷狗音频转换器进阶指南:无损格式互转与批量处理技巧
  • 快速生成树协议 RSTP IEEE 802.1w
  • ANSYS APDL工具栏进阶玩法:用嵌套Toolbar实现多级菜单(2023版)
  • Grok3角色扮演功能实测:从家庭作业助手到18+模式,哪个最实用?
  • Stable Yogi Leather-Dress-Collection季节主题作品展:春夏秋冬皮革风尚
  • 【SLAM坐标系精讲】从像素到世界:四大坐标系与核心变换的实战解析
  • 第七章 回溯算法part03
  • 半导体器件物理基础:金半接触的能带理论与整流机制
  • Zotero数据同步全攻略:从基础配置到坚果云WebDAV优化
  • 生成树协议 STP IEEE 802.1D-1998
  • 基于天空星GD32F407的SYN6288E语音合成模块移植与驱动开发实战
  • 开箱即用!Ollama快速部署GLM-4.7-Flash,开启本地AI对话新体验
  • 学习C语言第24天