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

《初学Java语言》第一讲:与C语言相同的不同之处

Java

  • 前言
  • 一、运行第一个JAVA程序
    • 1.Java程序的结构
      • 1.1 源文件(扩展名为*.java)
      • 1.2 类
      • 1.3方法(Java的方法等同于C语言的函数)
      • 1.4 类名和方法的命名规则
  • 二、变量与数据类型
    • 1.创建变量
      • 1.1语法形式
        • (1)
        • (2)
    • 2.整型变量
      • 2.1 int类型的大小
      • 2.2 int类型变量的取值范围
        • (1)再给变量设置初始值时,值不能超过int的表示范围
        • (2)int包装类型为Integer
    • 3.长整型变量
      • 3.1 long类型的大小
      • 3.2 long类型变量的取值范围
        • (1)再给变量设置初始值时,值不能超过long的表示范围
        • (2)long包装类型为Long
    • 4.字节型变量(与C语言不同)
      • 4.1 byte类型的大小
      • 4.2 byte类型变量的取值范围
        • (1)再给变量设置初始值时,值不能超过 byte的表示范围
        • (2) byte包装类型为Byte
    • 5.浮点型变量
      • 4.1 浮点类型的大小
        • (1)double的包装类型为Double
        • (2)float的包装类型为Float
        • (3)一般代码用浮点数优先考虑double
    • 6.布尔型变量
      • 6.1 boolean类型的大小
    • 7.字符型变量
      • 7.1 char类型的大小
      • 7.2 byte类型变量的取值范围
        • (1)再给变量设置初始值时,值不能超过 char的表示范围
        • (2) char包装类型为Character
    • 8.类型转换
      • 8.1 自动类型转换(隐式)
      • 8.2 强制类型转换
        • (1)不发生强转时,系统会报错
        • (2)强转注意事项
  • 三、字符串类型(不属于数据类型)
    • 1.字符串类型
    • 2. 字符串的拼接
        • (1)在需要空格的字符串打印空格
        • (2)利用加号(+),额外打印一个空格
    • 3.字符与整形互相转换
      • 3.1 String转int
      • 3.2 int转String
        • (1)利用 String 和 加号(+)
        • (2)借助String.valueOf()
  • 四、运算符
    • 1.算术运算符 +、-、*、/、%
      • 1.1 /、%
        • (1)做除法和取模时,右操作数不能为0
        • (2)Java的 % 可以对double类型取模,而C语言的 % 只能对整数取模
    • 2.增量运算符 +=、-=、*=、/=、%=
    • 3.自增/自减运算符 ++、--
    • 4.关系运算符 ==、!=、<、>、<=、>=
    • 5.逻辑运算符 &&、||、!
      • 5.1 &&(逻辑与)
        • (1)语法规则
        • (2)表达式的结果
      • 5.2 ||(逻辑或)
        • (1)语法规则
        • (2)表达式的结果
      • 5.3 !(逻辑非)
        • (1)语法规则
        • (2)表达式的结果
      • 5.4 短路求值
        • (1)但 & 和 | 也会有可能表示逻辑运算
    • 6.位运算符 &、|、~、^
    • 7.移位运算符 <<、>>、>>>
      • 7.1 Java的>>(右移位运算符)遵循的是算术右移法则(与C语言的两种右移位操作符的运算则来说)
      • 7.2 >>>(无符号右移)
    • 8.条件运算符
      • 8.1 语法形式
    • 9.运算符的优先级

前言

在一开始学习一个新的算法语言,我们难免可能会在刚开始的时候打退堂鼓,担心自己学不好,但如果你学的是Java,大概率是不会有这样的顾虑的,因为C语言像是Java的母语,而Java就像是这门母语的现代“方言”;如果你没学过C语言,也不要担心,该篇Java文章中写到关于C语言的,在本人的《初学C语言》的作品中都可以找到出处。
该篇Java文章涉及到的C语言主要集中在本人《初学C语言》作品的从0到1的第一步、第二讲和所有的有关操作符作品里

一、运行第一个JAVA程序

publicclassTest{publicstaticvoidmain(String[]args){System.out.println("hello java");}}

1.Java程序的结构

1.1 源文件(扩展名为*.java)

源文件带有类名的定义

  • 注:在一个源文件中只有一个public修饰的类(与C语言中一个源文件只有一个main是一样的),而且源文件名字必须与public修饰的类名相同

1.2 类

类用来表示程序的一个组件,小程序或许只会有一个类,类中带有一个或多个方法。

  • 注:类名与文件名不相同

1.3方法(Java的方法等同于C语言的函数)

方法必须在类的内部声明,在方法的花括号“{}”中编写方法应该执行的语句

1.4 类名和方法的命名规则

类名和方法名也可以称为标识符,标识符包含字母、数字、下划线(\)以及$符号

  • 标识符不能以数字开头,也不能是关键字,且严格区分大小写
  • 类名:每个单词的首字母大写(戏称大驼峰)
  • 方法名:首字母小写,后面每个单词的首字母大写(戏称小驼峰)
  • 变量名:与方法名的命名规则一样
  • 建议起变量名时,要使变量名起的有意义

二、变量与数据类型

Java的数据类型与C语言的数据类型大部分定义与用法相同,但Java也有它数据类型特殊的地方,同时,Java的变量的创建与C语言有很大的不同

1.创建变量

Java创建变量时,必须给变量赋予一个初始值

1.1语法形式

(1)
数据类型 变量名 = 初始值;
(2)
数据类型 变量名; 变量名 = 初始值; //在定义时没给初始值,但在使用前必须设置初始值

2.整型变量

inta=10;System.out.println(a);

2.1 int类型的大小

不论是在16位系统还是32位系统,int都占用4个字节

2.2 int类型变量的取值范围

publicclassTest{publicstaticvoidmain(String[]args){inta=10;System.out.println(Integer.MAX_VALUE);System.out.println(Integer.MIN_VALUE);}}
(1)再给变量设置初始值时,值不能超过int的表示范围
(2)int包装类型为Integer

3.长整型变量

在给long类型变量初始值后加L,来区分int和long类型

longa=10L;System.out.println(a);

3.1 long类型的大小

long类型不论在哪个系统下都占8个字节

3.2 long类型变量的取值范围

publicclassTest{publicstaticvoidmain(String[]args){longa=10L;System.out.println(Long.MAX_VALUE);System.out.println(Long.MIN_VALUE);}}
(1)再给变量设置初始值时,值不能超过long的表示范围
(2)long包装类型为Long

4.字节型变量(与C语言不同)

bytea=10;System.out.println(a);

4.1 byte类型的大小

byte类型不论在哪个系统下都占1个字节

4.2 byte类型变量的取值范围

publicclassTest{publicstaticvoidmain(String[]args){bytea=10;System.out.println(Byte.MAX_VALUE);System.out.println(Byte.MIN_VALUE);}}
(1)再给变量设置初始值时,值不能超过 byte的表示范围
(2) byte包装类型为Byte

5.浮点型变量

doublea=10.0;floatb=10.0f;System.out.println(a);System.out.println(b);

4.1 浮点类型的大小

double类型不论在哪个系统下都占8个字节
float类型不论在哪个系统下都占4个字节

(1)double的包装类型为Double
(2)float的包装类型为Float
(3)一般代码用浮点数优先考虑double

6.布尔型变量

布尔类型常用来表示真假,它的取值只有两种true 或 false

  • 注:java的boolean类型和int不能相互转换,不存在1表示true,0表示false这样的用法
booleana=true;System.out.println(a);

6.1 boolean类型的大小

在Java中并没明确规定boolean占几个字节,boolean的包装类型为Boolean

7.字符型变量

publicclassTest{publicstaticvoidmain(String[]args){charch1='a';System.out.println(ch1);}}

7.1 char类型的大小

在Java中,char占2个字节的大小,如:‘帅’(一个汉字占据两个字节)

publicclassTest{publicstaticvoidmain(String[]args){charch2='帅';System.out.println(ch2);}}

7.2 byte类型变量的取值范围

publicclassTest{publicstaticvoidmain(String[]args){System.out.println(Character.MAX_RADIX);System.out.println(Character.MIN_RADIX);}}
(1)再给变量设置初始值时,值不能超过 char的表示范围
(2) char包装类型为Character

8.类型转换

java作为一个强类型编程语言,当不同类型之间的变量相互赋值的时候,会有严格的校验。java中类型转换分为:自动类型转换 和 强制类型转换

8.1 自动类型转换(隐式)

代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。

  • 特点:数据范围小的转为数据范围大的时候会自动进行
publicclassTest{publicstaticvoidmain(String[]args){inta=10;longb=0L;b=a;System.out.println(b);}}

8.2 强制类型转换

当进行操作时,代码需要经过一定的格式处理,不能自动完成

  • 特点:数据范围大的到数据范围小的
(1)不发生强转时,系统会报错

(2)强转注意事项
publicclassTest{publicstaticvoidmain(String[]args){inta=10;longb=20L;a=(int)b;System.out.println(a);}}
  • 发生强制类型转换时,可能会造成数据的精度丢失
  • 强制类型转换不一定能成功,不相干的类型不能互相转换

三、字符串类型(不属于数据类型)

1.字符串类型

在java中,字符串类型属于引用类型,并且使用String类定义字符串类型

publicclassTest{publicstaticvoidmain(String[]args){Strings1="hello";Strings2="java";System.out.println(s1);System.out.println(s2);}

2. 字符串的拼接

在C语言中,输入一个字符串时,scanf遇到空白字符就会停止以及C语言中字符串不能想加减,但在java则不同,用拼接的方式,遇到空格也能打印出来,拼接常用的有两种方式:

(1)在需要空格的字符串打印空格
publicclassTest{publicstaticvoidmain(String[]args){Strings1="hello";Strings2=" java";System.out.println(s1);System.out.println(s2);System.out.println(s1+s2);}
(2)利用加号(+),额外打印一个空格
publicclassTest{publicstaticvoidmain(String[]args){Strings1="hello";Strings2="java";System.out.println(s1);System.out.println(s2);System.out.println(s1+" "+s2);}

3.字符与整形互相转换

3.1 String转int

需要借助Integer.parseInt()

publicclassTest{publicstaticvoidmain(String[]args){Stringstr="100";intnum=Integer.parseInt(str);System.out.println(num);}}

3.2 int转String

(1)利用 String 和 加号(+)
publicclassTest{publicstaticvoidmain(String[]args){intnum=100;Stringstr=num+"";System.out.println(str);}}
(2)借助String.valueOf()
publicclassTest{publicstaticvoidmain(String[]args){intnum=100;Stringstr=String.valueOf(num);System.out.println(str);}}

四、运算符

1.算术运算符 +、-、*、/、%

Java的 +、-、*与C语言的遵循一样的算数法则

1.1 /、%

(1)做除法和取模时,右操作数不能为0

(2)Java的 % 可以对double类型取模,而C语言的 % 只能对整数取模
publicclassTest{publicstaticvoidmain(String[]args){System.out.println(11.5%2.0);}}

2.增量运算符 +=、-=、*=、/=、%=

Java的所有增量运算符与C语言的用法都相同,但是涉及到类型转换Java有一个特殊法则

  • 增量运算符在计算的时候,可以不进行强制类型转换

3.自增/自减运算符 ++、–

Java的自增与自减与C语言运算法则一样

4.关系运算符 ==、!=、<、>、<=、>=

福安息运算符的计算结果是boolean类型

publicclassTest{publicstaticvoidmain(String[]args){inta=10;intb=20;System.out.println(a==b);System.out.println(a!=b);System.out.println(a<b);System.out.println(a>b);System.out.println(a<=b);System.out.println(a>=b);}}

5.逻辑运算符 &&、||、!

逻辑运算符的结果都是boolean类型

5.1 &&(逻辑与)

(1)语法规则
  • 表达式1 && 表达式2,左右表达式必须是boolean类型的结果
(2)表达式的结果

两个表达式都为真,结果才是真,只要有一个假,结果就为假

表达式1表达式2结果
publicclassTest{publicstaticvoidmain(String[]args){inta=10;intb=20;System.out.println(a==10&&b==20);}}

5.2 ||(逻辑或)

(1)语法规则
  • 表达式1 || 表达式2,左右表达式必须是boolean类型的结果
(2)表达式的结果

两个表达式只要有一个真,结果就为真

表达式1表达式2结果
publicclassTest{publicstaticvoidmain(String[]args){inta=10;intb=20;System.out.println(a==10||b==30);}}

5.3 !(逻辑非)

(1)语法规则
  • !表达式
(2)表达式的结果

真变假,假变真

表达式结果
publicclassTest{publicstaticvoidmain(String[]args){inta=10;intb=20;System.out.println(!(a==10));}}

5.4 短路求值

&& 和 || 遵循C语言的短路求值的规则

(1)但 & 和 | 也会有可能表示逻辑运算

当 & 和 | 表达式结果是boolean类型时,也表示逻辑运算,但它们不支持短路求值

6.位运算符 &、|、~、^

Java的 &、|、~、^ 这4个位运算符与C语言的位运算计算法则是一模一样的

7.移位运算符 <<、>>、>>>

Java的<<、>> 这2个位运算符与C语言的移位运算计算法则也是一模一样的,但Java有一个特殊的移位运算符

7.1 Java的>>(右移位运算符)遵循的是算术右移法则(与C语言的两种右移位操作符的运算则来说)

7.2 >>>(无符号右移)

  • 运算法则:最右侧位不要了,最左侧位补0

8.条件运算符

8.1 语法形式

表达式1 ? 表达式2 : 表达式3
  • 当表达式1 的值为true 时,整个表达式的值为表达式2 的值;
  • 当表达式1 的值为false 时,整个表达式的值为表达式3 的值.
publicclassTest{publicstaticvoidmain(String[]args){inta=10;intb=20;intc=a>b?1:2.0;System.out.println(c);}}

9.运算符的优先级

与C语言的优先级法则也是一模一样的,当然如果是记那些法则,不免会感觉时间都算浪费了,但是如果记住了,也当然是很不错的,能够扩展了自己的知识面。最简单的方法是,遇到优先级稍微有点歧义的,我们可以直接加括号 “()”,因为括号的优先级是最高的

http://www.jsqmd.com/news/798359/

相关文章:

  • NotebookLM音频能力全景图(2024Q2实测版):97%用户忽略的语音语义对齐漏洞与修复指南
  • 学习进度4/15
  • 微服务最可怕的不是拆分,而是数据库“慢性死亡”
  • 基于MyBlog开源个人博客系统 搭建与二次开发学习记录
  • 天津滨海京津冀防水补漏瓷砖修复哪家好 这几家正规机构别错过 - 鲁顺
  • 终极指南:如何用D2DX让《暗黑破坏神2》在现代电脑上完美运行
  • 5G NR的OFDM和DFT-s-OFDM到底怎么选?看完这篇你就懂了(附参数集详解)
  • EDEM与Fluent耦合接口实战:用‘米糠-碎米-铁’案例详解颗粒-流体双向耦合全流程
  • 【PHPer转GO】之高并发场景避坑宝典
  • C语言完美演绎9-28
  • Windows系统mqdscli.dll文件丢失无法启动程序解决
  • 2026 南京厂房装修公司怎么选?为何工业企业倾向南京力天装饰 - 小艾信息发布
  • 汽车电子电源架构演进与同步降压稳压器设计
  • 3步突破语言屏障:Translumo实时屏幕翻译解决方案实战手册
  • YOLOv11 改进 - 注意力机制 DCAFE双坐标注意力:并行坐标注意力 + 双池化融合
  • 学习进度4/13
  • DHCP 服务器总结:概念、原理与实验详解
  • 如何用League Akari一站式提升你的英雄联盟游戏体验:免费终极指南
  • 函数式编程实现 - 学员管理系统 - 06
  • 如何在5分钟内免费绕过iPhone激活锁:applera1n完整使用指南
  • 别再死记硬背公式了!用Python的NumPy和SciPy实战理解广义逆矩阵(附代码)
  • SAP财务顾问必看:蓝冲、红冲与反记账的实战配置详解(附后台路径)
  • 学习进度4/12
  • 成都装修公司推荐(2026最新)|口碑好、施工稳、售后快 - 成都人评鉴
  • 学习进度4/11
  • Unlock Music音乐解锁终极教程:5分钟掌握加密音频解密技巧
  • 漳州全屋定制服务商
  • Python多线程编程核心知识点整理
  • 5分钟掌握暗黑2存档修改秘籍:彻底告别重复刷怪烦恼
  • C语言完美演绎9-29