首页 > 编程语言 >Java学习笔记2

Java学习笔记2

时间:2023-05-14 13:25:23浏览次数:41  
标签:Java Scanner int System 笔记 学习 println 0000 out

屏幕截图 2023-01-10 205519

数据类型

Java是一种强类型语言,必须为每一个变量声明一种类型。在Java中数据类型分为:基本数据类型和引用数据类型。下面讨论Java的8种基本数据类型,4种整型2种浮点型1种字符类型char(用于表示Unicode编码的代码单元)和1种表示真值的boolean类型

标识符:就是给类,方法,变量等起的名字。

整型

整型表示没有小数部分的数值,允许是负数。

IMG_1234(20230110-121915)

在通常情況下,int 类型最常用。但如果想要表示整个地球的居佳人口,就需要使用long 类型了。byte 和short 类型主要用于特定的应用场合,例如,底层的文件处理或者存储空间很宝贵时的大数组 。

public class Hello{
	public static void main(String[]args){
		int a = 11;
		System.out.println(a);
		short b = 1;
		System.out.println(b);
		long c = 9999999L;
		System.out.println(c);
		byte d = '乐';
		System.out.println(d);
	}
}

长整型数值有一个后缀L或l,建议写成大写的L。

浮点类型

浮点类型用于表示有小数部分的数值。

IMG_1235(20230110-123522)

double表示这种类型的数值精度是float类型的两倍(有人称之为双精度数值)。在很多情况下,float 类型的精度(6~7位有效数字)并不能满足需求。实际上,只有很少的情况适合使用float 类型,例如,需要单精度数的库,或者需要存储大量数据时。

float类型的数值有一个 后缀F或f(例如3.14F) 。没有后缀F的浮点数值(如3.14)总是默认为double类型。

所有的浮点数值计算都遵循IEEE754规范。具体来说,下面用于表示溢出和出错情况的三个特殊的浮点数值。

正无穷大

负无穷大

NaN(不是一个数)

例如,一个正整数除于0结果为正无穷大,计算0/0或者负数的平方根结果为NaN。

浮点数値不造用于无法接受含入误差的金融汁算。例如,命令Systen.out.println (2. 0- 1. 1)将打印士0. 89999999999,而不是人们期望的0. 9。这种舍入误差的主要原 因是浮点数值来用二进制系统表示,而在二进制系统中无法精确地表示分数 1/10。这 就好像十进制无法精确地表示分数1/3 一样。如果在数值计算中不允许有任何舍入误 差,就应该使用BigDecinal 类,本章稍后将介绍这个类。

public class Hello{
	public static void main(String[]args){
	float a =11.5F;
    System.out.println(a);
    double b =18.6;
    System.out.println(b);
	}
}

char类型

char 类型原本用于表示单个字符。不过,现在情况已经有所变化。如今,有些Unicode 字符可以用一个char值描述,另外 一些Unicode宇符则需要两个char值。

char类型的字面量值要用单引号括起来。例如'A'是编码值为65的字符常量。它与"A"不同,"A"是包含一个字符A的字符串。

除了转义序列\u之外,还有一些用于表示特殊字符的转义序列,请参考表3-3.所有这些转义序列都可以出现在加引号的字符字面量或字符串中。例如,'\u2022'或"hello\n"。转义序列\u还可以出现在加引号的字符常量或字符串之外(而其它所有转义序列不可以)。例如

public static void main(String\u005B\u005D args)

就完全符合语法规则,\u005B和\u005D分别是[和]的编码。

IMG_1237(20230110-155658)

\t(制表符)

在打印的时候,把前面字符串的长度补齐到8,或者8的整数倍。最少补1个空格,最多补8个空格。

public class Hello{
	public static void main(String[]args){
	System.out.println("name" + \t + "age")
	System.out.println("Tom" + \t + "18")
	}
}
打印结果
name    age
Tom     18

boolean类型

boolean(布尔)类型有两个值:false和true,用来判定逻辑条件。整型值和布尔值之间不能进行相互转换。

命名规则

源代码的文件名必须与公共类的名字相同,并用.java作为扩展名。

硬性规定:
1由字母,数字,下划线(_),美元符$组成
2不能以数字开头
3不能是关键字
4区分大小写

小驼峰命名法

用于方法名,变量名

规范一:标识符是一个单词的时候,全部小写

例如:name

规范二:标识符由多个单词组成的时候,第一个单词字母小写,其他单词首字母大写

例如:firstName

大驼峰命名法

用于类名

规范一:标识符是一个单词的时候,首字母大写

例如:Student

规范二:标识符由多个单词组成的时候,每个单词的首字母大写

例如:GoodStudent

命名要见名知意

键盘录入

Java帮我们写好了一个类叫Scanner,这个类就可以接收键盘输入的数字。

步骤一:导包 Scanner这个类在哪

import java.util.Scanner;      #导包的动作必须出现在类定义的上面

步骤二:创建对象,表示要开始用Scanner这个类了

Scanner sc = new Scanner(System.in);           
#上面这个格式里,只有sc是变量,可以变,其他都不能变

步骤三:接收数据

int i = sc.nextInt();
#这个格式里,只有i是变量,可以变,其他都不可变

下面写一个例子:键盘输入两个数,最后再相加

import java.util.Scanner;
public class Hello{
	public static void main(String[]args){
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入一个数:");
	int i = sc.nextInt();
	System.out.println("再输入一个数:");
	int o = sc.nextInt();
	System.out.println(i+o);
	}
}

运行结果如下

屏幕截图 2023-01-10 205519

运算符

算术运算符

加,减,乘,除,取余。在有小数参与时,计算有可能不准确。

+	加
-	减
*	乘
/	除
%	取模,取余

练习:键盘输入一个三位数,分别打印个位,十位,百位上的数字到控制台。

import java.util.Scanner;
public class Text{
	public static void main(String[]args){
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入一个三位数:");
	int i = sc.nextInt();
	System.out.println(i % 10);
	System.out.println(i / 10 % 10);
	System.out.println(i / 100 % 10);
	
	}
}

“+” 操作的三种情况

数字相加

隐式转换(自动类型提升):把一个取值范围小的数值,转成取值范围大的数据。
取值范围小的,和取值范围大的进行运算,小的会先提升为大的,在进行运算。
byte short char三种类型的数据在运算时都会直接先提升为int,然后再运算。
数据类型不一样,不能进行计算,需要转换成一样的才可以进行计算。
byte<short<int<long<float<double
强制转换:如果把一个取值范围大的数值,赋值给取值范围小的变量是不允许直接赋值的,如果一定要这么做就需要加入强制转换。
格式:目标数据类型 变量名 = (目标数据类型)被强制转换的数据
double a = 12.3;
int b = (int)a;

字符串相加

当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算符了。
会将前后的数据进行拼接,并产生一个新的字符串。
连续进行“+”操作时,从左到右逐个执行
System.out.println(3+1+"年好学生" + 1 +2);		//4年好学生12

int age = 18;
System.out.println("我的年龄是" + age + "岁");       //我的年龄是18岁
System.out.println("我的年龄是" + "age" + "岁");		//我的年龄是age岁

练习:键盘输入一个三位数,分别打印个位,十位,百位上的数字到控制台,并标明位数。

import java.util.Scanner;
public class Hello{
	public static void main(String[]args){
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入一个三位数:");
	int i = sc.nextInt();
	System.out.println("个位数是:" + i % 10);
	System.out.println("十位数是:" + i / 10 % 10);
	System.out.println("百位数是:" + i /100 % 10);
	}
}

字符相加

当字符 + 字符时,会把字符通过ASCII码表查询到对应的数字在进行计算
当字符 + 数字时,会把字符通过ASCII码表查询到对应的数字在进行计算

自增自减运算符

++和 -- 既可以放在变量的前面,也可以放在变更量的后面

++	加	变量的值加1
--	减	变量的值减1

两种用法

++和--无论是放在变量的前面还是放在变量的后面,单独写一行结果是一样的
int a = 10;		//先用后加,b=10
int b = a++;

int a = 10;		//先加后用,b=11
int b = ++a;

赋值运算符

符号 作用 说明
= 赋值 int a=10,将10赋值给变量a
+= 加后赋值 a+=b,将a+b的值给a
-= 减后赋值 a-=b,将a-b的值给a
*= 乘后赋值 a*=b,将a*b的值给a
/= 除后赋值 a/=b,将a/b的值给a
%= 取余后赋值 a%=b,将a/b的余数给a

注意事项:扩展的赋值运算符隐藏了强制类型转换。

关系运算符

符号 说明
== a==b,判断a与b的值是否相等,成立为true,不成立为false
!= a!=b,判断a与b的值是否不相等,成立为true,不成立为false
> a>b,判断a的值是否大于b,成立为true,不成立为false
>= a>=b,判断a的值是否大于等于b,成立为true,不成立为false
< a<b,判断a的值是否小于b,成立为true,不成立为false
<= a<=b,判断a的值是否小于等于b,成立为true,不成立为false

注意事项:关系运算符的结果都是boolean类型,要么是true,要么是false。

练习:你和你的对象在餐厅约会。键盘录入两个整数,表示你和你对象的时髦程度。(手动录入0~10之间的整数)如果你的时髦程度大于你对象的时髦程度,约会就会成功,输出true,否则输出false。

import java.util.Scanner;
public class Hello{
	public static void main(String[]args){
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入你衣服的时髦程度:");
	int myclothes = sc.nextInt();
	System.out.println("请输入你对象衣服的时髦程度:");
	int your_girlfriend_clothes = sc.nextInt();
	boolean result = myclothes > your_girlfriend_clothes;
	System.out.println(result);
	}
}

逻辑运算符

符号 作用 说明
& 逻辑与(且) 并且,两边都为真,结果才是真
| 逻辑或 或者,两边都为假,结果才是假
^ 逻辑异或 相同为false,不同为true
! 逻辑非 取反

短路逻辑运算符

符号 作用 说明
&& 短路与 结果和&相同,但是有短路效果
|| 短路或 结果和|相同,但是有短路效果

短路运算:当左边能确定表达式结果时,就不会运行后面了

练习:数字6是一个伟大的数字,键盘录入两个整数。如果其中一个数字为6,最终结果输出为true。如果他们的和为6的倍数,最终结果输出true,其他情况都是false。

import java.util.Scanner;
public class Hello{
	public static void main(String[]args){
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入两个数字:");
	int a = sc.nextInt();
	int b = sc.nextInt();
	boolean result = a == 6 | b == 6 | (a+b) % 6 == 0;
	System.out.println(result);
	}
}

三元运算符(三元表达式)

格式

关系表达式?表达式1:表达式2;

计算规则

首先计算关系表达式的值
如果值为true,表达式1的值就是运算结果
如果值为false,表达式2的值就是运算结果

三元运算符的结果必须使用,可以赋值给一个变量或者打印。

练习:动物园有两只老虎,用键盘录入两只老虎体重,用程序实现体重是否相同。

import java.util.Scanner;
public class Hello{
	public static void main(String[]args){
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入两只老虎的体重:");
	double weight1 = sc.nextInt();
	double weight2 = sc.nextInt();
	String result = weight1==weight2 ? "相同":"不相同";
	System.out.println(result);
	}
}

运算符优先级

同一级别的运算符按照从左到右的次序进行计算(但右结合运算符除外)。例如,由于&&的优先级比||的优先级高,所以表达式 a&&b||c等价于(a&&b)||c。又因为+=是右结合运算符,所以表达式a+=b+=c等价于a+=(b+=c),也就是a=a+b+c。

IMG_1239(20230112-211345)

原码 反码 补码

原码

原码:十进制数据的二进制表现形式,最左边是符号位,0为正,1为负。

弊端:利用原码对正数进行计算是不会有为题的。但是如果是负数计算,结果就出错,实际运算的结果,跟我们预期的结果是相反的。

例如
56----->0 0111000			//(符号位+数据)

反码

反码:为了解决原码不能计算负数问题而出现的。

计算规则:正数的反码不变,负数的反码在原码的基础上,符号位不变。数值取反,0变1,1变0。

弊端:负数运算的时候,如果结果不垮0,是没有任何问题的,但是如果结果跨0,跟实际结果会有1的偏差。

补码

为了解决负数计算时候跨0的问题出现的。

计算规则:正数的补码不变,负数的补码在反码的基础上+1。另外补码还能多记录一个特殊的值-128,该数据在一个字节下,没有原码和反码。

注意:计算机中的存储和计算都是以补码的形式进行的。

byte类型的10	1个字节	0000 1010
short类型的10	2个字节	0000 0000 0000 1010
int类型的10	4个字节	0000 0000 0000 0000 0000 0000 0000 1010
long类型的10	8个字节	0000 0000 0000 0000 0000 0000 0000 0000
						0000 0000 0000 0000 0000 0000 0000 1010

其他符号运算,计算机底层运算规则

运算符 含义 运算规则
& 逻辑与 0为false 1为true
| 逻辑或 0为false 1为true
<< 左移 向左移动,低位补0
>> 右移 向右移动,高位补0或1
>>> 无符号右移 向右移动,高位补0

逻辑或示例:

IMG_2229

左移示例:

IMG_2230

标签:Java,Scanner,int,System,笔记,学习,println,0000,out
From: https://www.cnblogs.com/zhangyu520/p/17399135.html

相关文章

  • Java学习笔记3
    流程控制语句流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为三种结构:顺序结构(之前我们写的代码都是顺序结构)、分支结构(用到if判断)、循环结构(用到while与for)。顺序结构顺序结构语句是Java程序默认的执行流程,按照代码的先后顺序,从上到下依次执行。分支结构......
  • 正余弦优化算法(SCA)文章复现(拉丁超立方初始化种群+动态种群策略+反向学习扰动策略+
    正余弦优化算法(SCA)文章复现(拉丁超立方初始化种群+动态种群策略+反向学习扰动策略+精英混沌引导策略+破坏算子扰动策略)——DSCA复现内容包括:文章改进SCA算法实现、23个基准测试函数、文中相关因子分析、与SCA对比等。代码基本上每一步都有注释,非常易懂,代码质量极高,便......
  • 麻雀搜索算法(SSA)文章复现:《改进的麻雀搜索优化算法及其应用_尹德鑫》,策略为:反向学习
    麻雀搜索算法(SSA)文章复现:《改进的麻雀搜索优化算法及其应用_尹德鑫》,策略为:反向学习策略初始化+改进警觉者更新策略+Levy飞行策略——ISSA复现内容包括:文章改进SSA算法实现、23个基准测试函数、改进策略因子画图分析、文中各混沌图分析、与SSA对比等。代码基本上每一步......
  • 黏菌优化算法(SMA)文章复现(改进位置更新策略+自适应决策策略+反向学习更新策略)——AOSMA
    黏菌优化算法(SMA)文章复现(改进位置更新策略+自适应决策策略+反向学习更新策略)——AOSMA。复现内容包括:改进算法实现、23个基准测试函数、多次实验运行并计算均值标准差等统计量、与SMA对比等。代码基本上每一步都有注释,非常易懂,代码质量极高,便于新手学习和理解。ID:24596......
  • Java学习笔记4
    练习题练习1:机票机票价格按照淡旺季,头等舱和经济舱收费,输入机票原价,月份和头等舱或经济舱。按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。importjava.util.Scanner;publicclassHello{publicstaticvoidmain(S......
  • Java学习笔记5
    先休息一下眼睛......
  • MySQL学习日志九,分页和排序
    一、排序查询orderby排序升序ASC降序DESC1.升序排序--查询参加考试的同学,包含的信息包括学号,姓名,科目名,分数(以分数升序展示)SELECTs.studentno,studentname,subjectname,studentresultFROMstudentsINNERJOINresultrONs.studentno=r.studentnoinner......
  • Java数组之杨辉三角
    publicclassArrayTestor02{publicstaticvoidmain(String[]args){//构造杨辉三角int[][]yanghui=newint[10][];for(inti=0;i<yanghui.length;i++){int[]row=newint[i+1];yanghui[i]=row;......
  • Java学习笔记1
    简述Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。语言特性Java之所以被开发,是要达到以下五个目的:应当使用面向对象程序设计方法学应当允许同一程序在不同的计算机平台执行应当包括内建的对计算机......
  • Golang后端研发岗位的面试笔记整理
    今年互联网行情真不太行,暑期实习投了十几家,在经历了各种一面挂和二面挂后,终于在最后拿到了百度的暑期实习offer,真的不容易,中间一度被面试搞得怀疑人生,太难了QAQ这是本人花了点时间整理的一些与Golang后端研发岗位相关的面试笔记,欢迎大家及时补充当然并不局限于Golang研发岗位,......