前言
从这一篇我们开始Java的学习~
欢迎关注个人主页:逸狼
创造不易,可以点点赞吗~
如有错误,欢迎指出~
目录
Java第一个程序
public class Helloworld { //快捷键main 或者首字母psvm创建main方法 public static void main(String[] args) { System.out.println("Hello world!");//快捷键sout }}
java按类,方法,语句逐级来写
public class Helloworld是类,public static void main(String[] args)是main方法(相当于C语言的main函数,是程序的入口,快捷键是main回车),System.out.println(“hello world!”);是语句,(相当于C语言的printf函数,意为格式化打印Hello world!,快捷键是sout)
其中一个java文件中只能有一个public修饰的类
字面常量
常量即程序运行期间,固定不变的量。
字面常量的分类
1. 字符串常量:由“”括起来的,比如“12345”、“hello”、“你好”。
2. 整形常量:程序中直接写的数字(注意没有小数点),比如:100、1000
3. 浮点数常量:程序中直接写的小数,比如:3.14、0.49
4. 字符常量:由 单引号 括起来的单个字符,比如:‘A’、‘1’
5. 布尔常量:只有两种true和false
6. 空常量:null
在Java中数据类型主要分为两类:基本数据类型和引用数据类型。 基本数据类型有四类八种: 1. 四类:整型、浮点型、字符型以及布尔型
结合代码理解
public class Helloworld {
public static void main(String[] args) {
//整形
//int类型不管在多少位的机器上都是4字节
//Integer是包装类,简单理解为int类型的plus版本
System.out.println(Integer.MAX_VALUE);//输出int最大值2147483647
System.out.println(Integer.MIN_VALUE);//输出int最小值-2147483648
//局部变量 没有初始化会报错
//java会检查字面值 超过会报错
int c=2147483647;//int类型范围2^31~2^31-1
int d=c+1;
System.out.println(d);
//长整形
long x=10L;//long类型的范围2^63~2^63-1,后面加上L(不建议l),表示当前10是long类型
//8字节 64bit
//Long是包装类,简单理解为long类型的plus版本
System.out.println(Long.MAX_VALUE);//输出long最大值9223372036854775807
System.out.println(Long.MIN_VALUE);//输出long最小值-9223372036854775808
//短整型short
/*
* 2个字节 -2^15~2^15-1
* */
short s=10;
System.out.println(s);
System.out.println(Short.MAX_VALUE);//32767
System.out.println(Short.MIN_VALUE);//-32768
//byte 1个字节 -128~127
byte b=100;
System.out.println(b);
System.out.println(Byte.MAX_VALUE);//127
System.out.println(Byte.MIN_VALUE);//128
//字符型char 2字节
//unicode字符集 包含了阿拉伯文,汉字,ASCII表等
char ch='逸';
char ch1=97;//可以给值正整数,输出ASCII对应字符a
System.out.println(ch1);
//包装类型是Character
//单精度浮点型float,4字节
float f=12.5f;//要加上f,否则会被认为是double类型的数据,报错
System.out.println(f);
//双精度浮点型double 8个字节(在任何系统都是)
//在内存中存储与整形不同,也遵循IEEE754标准,所以浮点数是近似值,不是精确值
double num=1.1;
System.out.println(num*num);//输出1.2100000000000002
//包装类型是Double
//布尔类型 没有明确的大小,不能和其他类型的值相互转换,不存在1真0假
boolean flg=true;
System.out.println(flg);
//包装类型是Boolean
}
}
其中包装类型 是基本数据对应的类 类型
类型转换
代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。
特点:数据范围小的转为数 据范围大的时会自动进行。
int a=10;//4
long b=100L;//8
//b=a 可以通过编译 编译器自动类型提升
//a=b 会报错,需要强制类型转换,a=(int)b,缺点:可能会有数据丢失
//不相干类型的数据不能相互转换
类型提升
byte与byte的运算
byte a = 10;
byte b = 20;
byte c = a + b;
System.out.println(c);
byte 和 byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和 b 都提升成 int, 计算结果也是 int, 赋给 c, 就会出现上述错误. 由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short 这种低于 4 个字节的类型, 会先提升成 int, 再参与计算.
正确写法
byte a = 10;
byte b = 20;
byte c = (byte)(a + b);
System.out.println(c);
字符串类型String
String不是包装类型,是引用数据类型。
public static void main(String[] args) {
String str1="Hello ";
String str2="world!";
//+意为拼接
String str3=str1+str2;
System.out.println(str3);
}
int与String相互转换
int转String
int num = 10;
// 方法1
String str1 = num + "";
// 方法2
String str2 = String.valueOf(num);
String转int
其中被转换的数字必须是合法的数字字符串,比如“100a200″就不行
String str = "100";
int num = Integer.parseInt(str);
算术运算符
加减乘除模(+ – * / %)
+加
两侧操作数类型不一致时,向类型大的提升
System.out.println(1+0.2); // +的左侧是int,右侧是double,在加之前int被提升为double
// 故:输出1.2
/ 除
做除法和取模时,右操作数不能为0
public static void main(String[] args) {
System.out.println(5/2);//2
System.out.println(5.0/2);//2.5
System.out.println(5/0);//报错
System.out.println(5.0/0);//Infinity
}
%取余
public static void main(String[] args) {
System.out.println(9%2);//1
System.out.println(9%-2);//1
System.out.println(-9%2);//-1
System.out.println(-9%-2);//-1
}
小数也可以%
System.out.println(11.5%2);//1.5
增量运算符 += -= *= %=
例如+=,其他以此类推
int a = 1;
a += 2; // 相当于 a = a + 2
System.out.println(a); // 输出3
自增/自减运算符 ++ —
++是给变量的值+1,–是给变量的值-1。
分前置和后置,
以++举例,比如b=++a (前置),表示a先+1,再赋值给b
而b=a++(后置),表示先赋值给b,a再+1
关系运算符 == != < > =
其计算结果是 true 或者 false 。
int a = 10;
int b = 20;
System.out.println(a == b); // false
System.out.println(a != b); // true
System.out.println(a < b); // true
System.out.println(a > b); // false
System.out.println(a <= b); // true
System.out.println(a >= b); // false
逻辑运算符&& || !
运算结果都是 boolean类型,表达式必须是boolean类型的结果。
逻辑与&&
表达式1 && 表达式2
有一个为假,表达式为假
逻辑或||
表达式1 || 表达式2
有一个为真,表达式为真
逻辑非!
!表达式
假变真,真变假
短路
第一个表达式成立,就不会执行第二个表达式
System.out.println(10 > 20 && 10 / 0 == 0); // 打印 false
System.out.println(10 < 20 || 10 / 0 == 0); // 打印 true
位运算符
按位与&
有0则为0,可理解为乘法
按位与|
有1则为1,可理解为加法
按位取反 ~
1变0,0变1
按位异或
同为0,异为1
条件运算符
条件运算符只有一个: 表达式1 ? 表达式2 : 表达式3
当 表达式1 的值为真 时, 整个表达式的值为 表达式2 的值
为假,则表达式3
// 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;
移位运算
位运算的 速度 比普通的加减乘除更快
1. 左移<< 最左侧位去掉, 最右侧补 0,相当于乘法
2. 右移 >>最右侧位去掉, 最左侧补 符号位,相当于除法
3.无符号右移>>>最右侧位去掉, 最左侧补0
版权声明:本文为博主作者:逸狼原创文章,版权归属原作者,如果侵权,请联系我们删除!
原文链接:https://blog.csdn.net/2301_80898480/article/details/136965890