Java基础入门:数据类型、运算符、逻辑控制语句及应用实战解析
目录
编辑
1.前言
2.正文
2.1数据类型与变量
2.1.1字面常量
2.1.2数据类型
2.1.3变量
2.1.3.1整型
2.1.3.2浮点型
2.1.3.3字符型
2.1.3.4布尔型
2.1.4类型转换与类型提升
2.1.4.1字符串的拼接
2.1.4.2整型转字符串
2.1.4.3字符串转整数
2.2运算符
2.2.1算术运算符
2.2.2关系运算符
2.2.3逻辑运算符(关键)
2.2.4位运算符
2.2.5移位运算符
2.2.6条件运算符
2.3逻辑控制语句
2.3.1分支结构
2.3.2循环结构
3.基础应用
3.1判断素数
3.2判断闰年
3.3打印九九乘法表
3.4返回参数二进制中 1 的个数
3.5猜数字游戏
4.小结编辑
1.前言
哈喽小伙伴们大家好哦~从今天开始笔者就要开始正式学习java了,基础的语法语言之间都是很类似的,所以基础语法的博客就记录的凝练一些,创作的这些博客也算是一些学习笔记,又相当于给大家做知识分享咯,希望大家一起加油哦!
2.正文
2.1数据类型与变量
2.1.1字面常量
字面常量主要有以下几种,接下来我通过代码和注释给大家一一实现:
public class test1 {
public static void main(String[] args) {
System.out.println(123);//整型常量
System.out.println(12.3);//浮点型常量
System.out.println('a');//字符常量
System.out.println("abc");//字符串常量
System.out.println(true);//布尔常量
}
}
打印结果如下:
2.1.2数据类型
在java中,共有俩种数据类型,分别是基本数据类型与引用数据类型。这俩大类分类的标准是基本数据类型是Java中预定义的,而引用数据类型是指向内存中的一个对象,以此来区分。
2.1.3变量
变量的创建方法: 数据类型 变量名 = 初始值;(下文代码均有体现)
2.1.3.1整型
整型共包括四种:
- 字节型:type,占用一个字节,范围-128~127,包装类型为Type
- 短整型:short,占用俩个字节,范围-32768 ~ 32767,包装类型为Short
- 整型:int,占用四个字节,范围-
~
-1,包装类型为Interger
- 长整形:long,占用八个字节,范围-
~
-1,包装类型为Long
其中整型是由符号的,整型默认为int型
代码演示:
public static void main(String[] args) {
byte a = 5;
short b = 10;
int c = 15;
long d = 20;
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
}
运行结果:
有关这四种类型的互相转换需要特别讲解一下,让我们先来看下面这段代码:
public static void main(String[] args) {
byte a = 10;
byte b = 20;
int c = a + b;
System.out.println(c);
}
该代码段将byte字节型的变量转化为int整型变量,将一个字节的内容转化成四个字节存储的内容,显然没有问题。
但接下来这段代码如果把进程颠倒过来,事情就发生了转变,请看:
public static void main(String[] args) {
byte a = 10;
int b = 129;
a = (byte)b;
System.out.println(a);
}
打印结果却不是我们想要的129,而是-127。
也许有些同学会疑惑 ,为什么打印出来的不是我们想要的结果呢。原因很简单,因为int作为整型变量占有四个字节,强制转换仅占一个字节byte类型会丢失后面三个字节的内容,从而结果有误。所以在这里,博主建议,非必要尽量避免类型的强制转化,有些错误可能当时没有发生,但这就是埋藏的一颗雷,时刻可能出问题。
更加详细的类型提升与类型转换在下文还会有讲解。
2.1.3.2浮点型
浮点型包含俩种:
- 单精度浮点数:float,占四个字节
- 双精度浮点数:double,占八个字节
代码如下:
public static void main(String[] args) {
double num = 1.1;
System.out.println(num * num);
float f = 12.5F;
System.out.println(f);
}
运行结果如下:
另外需要注意的点是如果俩个int型
2.1.3.3字符型
字符型只有一种char类型,占据俩个字节,包装类型为,接下来展示其具体应用。
public static void main(String[] args) {
char ch1 = 'a';
char ch2 = '高';
System.out.println(ch1);
System.out.println(ch2);
Character c = 'p';
}
2.1.3.4布尔型
布尔型关键字为boolean,范围仅为true和false,而非1和0
public static void main(String[] args) {
boolean b = true;//Boolean
System.out.println(b);
}
2.1.4类型转换与类型提升
2.1.4.1字符串的拼接
如果们想把俩个简单的字符串相连,仅仅只需要+即可,代码如下:
public static void main(String[] args) {
String str = "hello";
String str2 = "word";
System.out.println(str+str2);
System.out.println(str.length());//用于查询字符串长度
System.out.println(str.charAt(0));//用于查询字符串的第n位的字符
}
运行结果如下:
2.1.4.2整型转字符串
将整型转化为字符串有俩种办法:
- 一是之际利用+" "来实现
- 二是基本数据类型都可以通过String.valueOf()方法转化为字符串表示形式
代码展示如下:
public static void fun() {
int a = 123;
String str = a+"";
System.out.println(str);
System.out.println("========");
String str1 = String.valueOf(a);
System.out.println(str1);
}
2.1.4.3字符串转整数
public static void main(String[] args) {
String str = "123";
int a = Integer.parseInt(str);
System.out.println(a);
}
2.2运算符
2.2.1算术运算符
算术运算符自然包括一些我们熟知的加减乘除模,接下来我进行总结:
加法运算符 (
+
):用于将两个数值相加。 也可以用于字符串连接。 int a = 10; int b = 5; int sum = a + b; // sum = 15 String str = "Hello, " + "World!"; // str = "Hello, World!"
减法运算符 (
-
):用于从一个数值中减去另一个数值。 int a = 10; int b = 5; int difference = a - b; // difference = 5
乘法运算符 (
*
):用于将两个数值相乘。 int a = 10; int b = 5; int product = a * b; // product = 50
除法运算符 (
/
):用于将一个数值除以另一个数值。 结果是一个浮点数,即使两个操作数都是整数。 int a = 10; int b = 5; double quotient = (double) a / b; // quotient = 2.0
取模运算符 (
%
):用于求两个整数相除的余数。 int a = 10; int b = 3; int remainder = a % b; // remainder = 1
自增运算符 (
++
):用于将变量的值增加1。 可以作为前缀(先增后用)或后缀(先用后增)。 int a = 5; a++; // 后缀,a = 6 ++a; // 前缀,a = 7
自减运算符 (
--
):用于将变量的值减少1。 可以作为前缀或后缀。 int a = 5; a--; // 后缀,a = 4 --a; // 前缀,a = 3
以上许多在大部分语言中都类似,一些细微的差别主要区分在细节上。
2.2.2关系运算符
关系运算符用于比较两个值,并返回一个布尔值(true
或 false
)。以下是Java中的关系运算符及其用法:
等于 (
==
):检查两个值是否相等。 int a = 5; int b = 5; boolean result = (a == b); // result = true
不等于 (
!=
):检查两个值是否不相等。 int a = 5; int b = 10; boolean result = (a != b); // result = true
大于 (
>
):检查左边的值是否大于右边的值。 int a = 5; int b = 3; boolean result = (a > b); // result = true
(大于,小于,大于等于,小于等于类似在这里不一一列举)
2.2.3逻辑运算符(关键)
逻辑与 (
&&
):逻辑与运算符用于比较两个布尔表达式,只有当两个表达式都为 true
时,结果才为true
。它是短路运算符,如果第一个表达式为 false
,则不会评估第二个表达式。boolean a = true; boolean b = false; boolean result = (a && b); // result = false
逻辑或 (
||
):逻辑或运算符用于比较两个布尔表达式,只要有一个表达式为 true
,结果就为true
。它也是短路运算符,如果第一个表达式为 true
,则不会评估第二个表达式。boolean a = true; boolean b = false; boolean result = (a || b); // result = true
逻辑非 (
!
):逻辑非运算符用于反转布尔表达式的值,将 true
转换为false
,将false
转换为true
。boolean a = true; boolean result = (!a); // result = false
逻辑异或 (
^
):逻辑异或运算符用于比较两个布尔表达式,如果两个表达式不同,则结果为 true
。它不是短路运算符,无论第一个表达式的值如何,都会评估第二个表达式。 boolean a = true; boolean b = false; boolean result = (a ^ b); // result = true
条件运算符 (
?:
):条件运算符也称为三元运算符,它是一种简写的if-else语句,用于在单个表达式中进行条件判断。 int a = 10; int b = 20; int max = (a > b) ? a : b; // max = 20
2.2.4位运算符
位与 (
&
):对应位都为1时,结果才为1,否则为0。 int a = 12; // 1100 int b = 9; // 1001 int result = a & b; // 1000 (8)
位或 (
|
):对应位至少有一个为1时,结果为1,否则为0。 int a = 12; // 1100 int b = 9; // 1001 int result = a | b; // 1101 (13)
位异或 (
^
):对应位相同则结果为0,不同则结果为1。 int a = 12; // 1100 int b = 9; // 1001 int result = a ^ b; // 0101 (5)
位非 (
~
):反转操作数的每一位,即0变为1,1变为0。 int a = 9; // 1001 int result = ~a; // 0110 (-10)
2.2.5移位运算符
左移 (
<<
):将操作数的二进制表示向左移动指定的位数,右边空出的位补0。 int a = 9; // 1001 int result = a << 2; // 100100 (36)
右移 (
>>
):将操作数的二进制表示向右移动指定的位数,左边空出的位用符号位填充(对于正数是0,对于负数是1)。 int a = -9; // 11111111111111111111111111110111 (32位补码) int result = a >> 2; // 11111111111111111111111111111101 (-3)
无符号右移 (
>>>
):将操作数的二进制表示向右移动指定的位数,左边空出的位补0,不考虑符号位。 int a = -9; // 11111111111111111111111111110111 (32位补码) int result = a >>> 2; // 00111111111111111111111111111101 (1073741825)
2.2.6条件运算符
条件运算符只有一个三目运算符:
表达式为:条件表达式 ? 表达式1 : 表达式2。
这里的“条件表达式”是一个返回布尔值的表达式,如果条件表达式的结果为 true
,则整个三目运算符的结果为“表达式1”的值;如果条件表达式的结果为false
,则结果为“表达式2”的值。int a = 10; int b = 20; int max = (a > b) ? a : b; // max = 20,因为 a 不大于 b
2.3逻辑控制语句
2.3.1分支结构
if语句:
用于在满足特定条件时执行一段代码。 if (condition) { // 当条件为true时执行的代码 }
if-else语句:
用于在条件为真时执行一段代码,条件为假时执行另一段代码。 if (condition) { // 当条件为true时执行的代码 } else { // 当条件为false时执行的代码 }
if-else if-else语句:
用于在多个条件之间进行选择,并执行相应的代码块。 if (condition1) { // 当条件1为true时执行的代码 } else if (condition2) { // 当条件1为false且条件2为true时执行的代码 } else { // 当所有条件都不为true时执行的代码 }
switch语句:
用于根据变量的值选择执行不同的代码块。部分版本中中,switch语句支持字符串和箭头(->)语法。 switch (expression) { case value1: // 当expression的值等于value1时执行的代码 break; case value2: // 当expression的值等于value2时执行的代码 break; default: // 当expression的值不匹配任何case时执行的代码 }
2.3.2循环结构
for循环:
用于已知循环次数的情况。 例如,打印0到9的数字:
for (int i = 0; i < 10; i++) { System.out.println(i); }
while循环:
用于循环次数未知,但有一个继续执行循环的条件。 例如,当变量i小于10时继续循环:
int i = 0; while (i < 10) { System.out.println(i); i++; }
do-while循环:
类似于while循环,但它至少执行一次循环体,即使条件为假。 例如,至少打印一次变量i的值,然后检查i是否小于10:
int i = 0; do { System.out.println(i); i++; } while (i < 10);
3.基础应用
以下题目供基础语法训练时使用,仅提供代码
3.1判断素数
import java.util.Scanner;
import java.lang.Math;
public class test1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int flag = 1;
for(int i = 2;i < Math.sqrt(n);i++){
if(n % i ==0){
System.out.println(n + "不是素数");
flag = 0;
break;
}
}
if(flag==1){
System.out.println(n + "是素数");
}
}
}
3.2判断闰年
import java.util.Scanner;
import java.lang.Math;
public class test1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入需要判断的年份");
int n = scanner.nextInt();
if(n % 4 ==0||n % 400 == 0){
System.out.println("该年份为闰年");
}
else{
System.out.println("该年份不是闰年");
}
}
}
3.3打印九九乘法表
import java.util.Scanner;
import java.lang.Math;
public class test1 {
public static void main(String[] args) {
int n = 9;
for(int i = 1;i <= 9;i++){
for(int j = 1;j <= i;j++){
System.out.printf("%d * %d = %d ",i ,j, i*j);
}
System.out.println();
}
}
}
3.4返回参数二进制中 1 的个数
import java.security.DrbgParameters;
import java.util.Scanner;
import java.lang.String;
public class test1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();
int ans = 0;
String binaryString = Integer.toBinaryString(number);
char[] str1 = binaryString.toCharArray();
for(int i = 0;i <binaryString.length() ;i++){
if(str1[i] == '1')ans++;
}
System.out.println(ans);
}
}
3.5猜数字游戏
import java.util.Scanner;
import java.lang.String;
import java.util.Random;
public class test1 {
public static void main(String[] args) {
Random random = new Random();
Scanner scanner =new Scanner(System.in);
int min = 1;int max = 100;
int num = random.nextInt(max - min + 1) + min;;
int n = 0;
while(n!=num){
System.out.println("请输入你要猜的数字");
n = scanner.nextInt();
if(n > num){
System.out.println("输入数字大,请重新输入");
continue;
}
if(n < num){
System.out.println("输入数字小,请重新输入");
continue;
}
if(n == num){
System.out.println("恭喜你!猜对了");
break;
}
}
}
}
4.小结
今天的java基础知识分享到这里就结束了,博主也是码了好多字,希望大家多多支持我哦。
作者:爱吃烤鸡翅的酸菜鱼