第一节:hello world
Demo.class 叫作中间文件或者二进制文件
主函数不是必须的,需要执行就需要主函数。
一个文件中可以有多个类,每个类都可以带一个主函数。
public class Demo //如果加了public,源文件和class文件名必须一致。 { public static void main(String[] args) { System.out.println("hello java"); } }
classpath : 类文件所在路径
环境变量和当前目录中都有class文件,会执行环境变量中的class文件。
临时配置classpath
set classpath = c:\; //先从环境变量中找class文件,找不到,再从当前目录中找 set classpath = c:\ //只从环境变量中找class文件。不在当前目录中找。不加分号比较好,因为加了分号有时会得到意想不到的执行结果。 set classpath = //清空环境变量
注释:
1 2 3 4 5 6 7 | // 单行注释 /**/ 多行注释 /** */ 文本注释 多行注释不能嵌套多行注释。 |
1、需求:为什么开发这个软件 2、思路:对实现需求的想法 3、步骤:代码实现
标识符
定义标识符的规则:
1、数字不可以开头
2、不可以使用关键字
3、java中严格区分大小写
标识符规范:
包名:所有字母小写 xxxyyyzzz
类名接口名:单词首字母大写 XxxYyyZzz
标量名和函数名:第一个单词首字母小写,第二个单词开始首字母大写 xxxYyyZzz
常量名:所有字母都大写,单词之间用下划线连接。 XXX_YYY_ZZZ
Java中常量的分类:
1、整数常量:所有整数
2、小数常量:所有小数
3、布尔型常量:true、false
4、字符常量:一个数字、字母或者符号用单引号标识的数据
5、字符串常量:用双引号标识的数据
6、null
字节: 8个二进制位代表一个字节
负数二进制: 正的二进制取反,然后加1:
比如-1:1111-1111 1111-1111 1111-1111 1111-1110 然后加1 就是1111-1111 1111-1111 1111-1111 1111-1111
数据类型
定义变量要先定义变量的数据类型==》强类型语言。
byte short int long 占1248个8位
float double 占4、8个8位
字符 占2个8位
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 一、基本数据类型: byte :Java中最小的数据类型,在内存中占 8 位(bit),即 1 个字节,取值范围- 128 ~ 127 ,默认值 0 short :短整型,在内存中占 16 位,即 2 个字节,取值范围- 32768 ~ 32717 ,默认值 0 int :整型,用于存储整数,在内在中占 32 位,即 4 个字节,取值范围- 2147483648 ~ 2147483647 ,默认值 0 long :长整型,在内存中占 64 位,即 8 个字节- 2 ^ 63 ~ 2 ^ 63 - 1 ,默认值0L float :浮点型,在内存中占 32 位,即 4 个字节,用于存储带小数点的数字(与 double 的区别在于 float 类型有效小数点只有 6 ~ 7 位),默认值 0 double :双精度浮点型,用于存储带有小数点的数字,在内存中占 64 位,即 8 个字节,默认值 0 char :字符型,用于存储单个字符,占 16 位,即 2 个字节,取值范围 0 ~ 65535 ,默认值为空 boolean :布尔类型,占 1 个字节,用于判断真或假(仅有两个值,即 true 、 false ),默认值 false |
byte与int相加
自动类型转换
byte b = 3 b = b + 3
- 3是一个固定的值,会做一个自动类型转换,转换成byte类型的数据。所以能赋值给byte类型的空间;
- b+2的值可能会超过byte类型的空间的范围,需要将b+2的结果强制转成byte类型,才能赋值给byte类型的空间。
强制类型转换
byte b = 2 b = (byte) (b + 3) //将b+3的结果强制转换成byte类型。
- float 和 int 占4个8位。如果float和int类型的数据进行运算,结果是float
- 字符和数字相加,结果是数字。
- byte类型的值和int类型的值运算会转换成int类型的值。
string和int相加
字符和数字相加 会按照ASSIC码中字符对应的数字 与数字相加:
System.out.println('a'+1); //结果是:98
原因:英文字符占1个8位,数字占4个8位。相加之后字符会提升到4个8位即整数。
运算符:
1、算术运算符
2、赋值运算符
3、比较运算符
4、逻辑运算符
5、位运算符
6、三元运算符
算数运算符:
取模:
左边小于右边,结果是左边
右边是1结果是0
左右相等,结果是0
如果出现负数,结果看左边,左边是负数结果就是负数。左边是正的结果就是正的。
自加自减:
a++ 先赋值再运算
++a 先运算再赋值
int a = 3,b; b = a++; //a先赋值给b之后,再自加1(a=a+1) System.out.println(b); //结果是3 System.out.println(a); //结果是4
字符串连接符 +:
字符串数据和任何数据使用+相连接,最终都会变成字符串。
System.out.println("5+5="+5+5) //结果是"5+5=55"
转义字符:
\ :将特殊含义的字符转义成纯字符。
\n:换行
\b:退格,相当于backspace
\r:按下回车键。Windows系统,回车键是\r\n
\t:制表符,相当于tab键。
赋值运算符:
+= -= *= /= %=
short s = 4; //两者的区别在于,+=会做数据类型的自动转换 s = s + 5; //编译会失败,因为s会提升为int类型运算的结果还是int类型,无法赋值给short。右边的和赋值给左边,做两次运算:先相加再赋值。 s+=5; //编译通过,因为+=运算符在给s赋值时,自动完成了强转操作。左右两边的和赋值给左边。只做一次运算:赋值
逻辑运算符:
java不允许 6 < x < 3 这种表达形式
& // 与 皆true为true,一false为false && // 短路与 左为false,右不运算。 | // 或 一True为true。 || //短路或 左为true,右不算 ! // 非 !true 为假 ^ //异或 两边不同为true。
位运算
2、
ps:因为4位1是15,是16进制中单位最大的数。如果换算成8进制就是每三位(7)对应一个8进制数
怎样将10进制的数变成16进制中的字母:
A对应的ASCII码值是65
三元运算符:
a会被提升成整数,因为他和200一起进行运算
思考:
根据一个整数,获得16进制&15,获得8进制&7,获得二进制&1
代码示例:
class Demo { public static void main(String[] args) { byte x = 127; x = (byte)(x + 10); System.out.println(x); } }
class Demo { public static void main(String[] args) { int x = 4270; x = x /1000 * 1000; System.out.println(x); //结果是4000,x除以1000的结果带小数点,因为x整型,得到的结果也是整型,所以小数点右边的被砍掉了。 } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现