JAVA零基础学习2(算术逻辑三元运算符、原码反码补码、标准的类如何描写)
- 算术运算符
- 算术运算符
- 自增和自减运算符
- 算术运算符的优先级
- 示例代码
- 逻辑运算符
- 三元运算符
- 示例代码
- 示例1:简单的条件判断
- 示例2:嵌套的三元运算符
- 原码反码补码
- foreach
- switch简化
- 二维数组
- 类和对象
- 标准的类的写法步骤
- Java小试一试小游戏
算术运算符
在Java中,算术运算符用于执行基本的数学运算。以下是Java中常见的算术运算符及其用法:
算术运算符
- 加法运算符(+)
- 用于两个操作数的加法。
- 也可以用于字符串的连接。
int a = 10; int b = 20; int sum = a + b; // 30 String firstName = "John"; String lastName = "Doe"; String fullName = firstName + " " + lastName; // John Doe
数字进行运算时,数据类型不一样不能运算,需要转成- -样的,才能运算。
类型转换:
隐式转换:
1、取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算。整数和小数取值范围大小关系:
double > float > long > int > short > byte
2、byte short char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算。
强制转换:
当从较大范围的数据类型转换为较小范围的数据类型时,需要使用强制类型转换。这可能会导致精度丢失或溢出。
// 浮点数转换为整数
double myDouble = 9.78;
int myInt = (int) myDouble; // 强制类型转换
当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算符了。会将前后的数据进行拼接,并产生一个新的字符串。
连续进行" + "操作时,从左到右逐个执行。
1 +99+ "年"加在一起的结果是“100年”
int age = 18;
System. out. print1n("我的年龄是"+ age + "岁"); //"我的年龄是18岁"
System. out . println("我的年龄是" + "age"+"岁"); //"我的年龄是age岁"
System. out. println(1 +2+"abc"+ 2 + 1);//"3abc21"
-
减法运算符(-)
- 用于两个操作数的减法。
int a = 20; int b = 10; int difference = a - b; // 10
-
乘法运算符(*)
- 用于两个操作数的乘法。
int a = 10; int b = 20; int product = a * b; // 200
-
除法运算符(/)
- 用于两个操作数的除法。
- 整数除法会舍弃小数部分。
int a = 20; int b = 10; int quotient = a / b; // 2 double x = 20.0; double y = 3.0; double result = x / y; // 6.666...
-
取模运算符(%)
- 用于求两个操作数的余数。
int a = 20; int b = 3; int remainder = a % b; // 2
自增和自减运算符
-
自增运算符(++)
- 将操作数的值加1。
- 前缀自增(
++a
)先加1后使用。 - 后缀自增(
a++
)先使用后加1。
int a = 10; int b = ++a; // a变为11,b为11 int c = a++; // a变为12,c为11
-
自减运算符(–)
- 将操作数的值减1。
- 前缀自减(
--a
)先减1后使用。 - 后缀自减(
a--
)先使用后减1。
int a = 10; int b = --a; // a变为9,b为9 int c = a--; // a变为8,c为9
算术运算符的优先级
算术运算符在表达式中的优先级按照以下顺序排列(从高到低):
++
(前缀),--
(前缀)*
,/
,%
+
,-
++
(后缀),--
(后缀)
括号 ()
可以用来改变运算的优先级。
示例代码
public class ArithmeticOperators {
public static void main(String[] args) {
int a = 10;
int b = 3;
// 加法
int sum = a + b;
System.out.println("Sum: " + sum); // 13
// 减法
int difference = a - b;
System.out.println("Difference: " + difference); // 7
// 乘法
int product = a * b;
System.out.println("Product: " + product); // 30
// 除法
int quotient = a / b;
System.out.println("Quotient: " + quotient); // 3
// 取模
int remainder = a % b;
System.out.println("Remainder: " + remainder); // 1
// 自增和自减
int x = 5;
System.out.println("Initial x: " + x); // 5
System.out.println("x++: " + x++); // 5
System.out.println("After x++: " + x); // 6
System.out.println("++x: " + ++x); // 7
System.out.println("x--: " + x--); // 7
System.out.println("After x--: " + x); // 6
System.out.println("--x: " + --x); // 5
}
}
通过这些示例,你可以了解Java中算术运算符的基本用法及其操作。掌握这些运算符是编写有效Java代码的基础。
逻辑运算符
三元运算符
在Java中,三元运算符(也称为条件运算符)是一种简洁的方式来处理简单的条件语句。它的语法如下:
result = condition ? value1 : value2;
这里:
condition
是一个布尔表达式。- 如果
condition
为true
,则result
取value1
的值。 - 如果
condition
为false
,则result
取value2
的值。
示例代码
以下是使用三元运算符的示例代码:
示例1:简单的条件判断
public class TernaryOperatorExample {
public static void main(String[] args) {
int a = 10;
int b = 20;
// 使用三元运算符判断较大值
int max = (a > b) ? a : b;
System.out.println("The maximum value is: " + max);
}
}
在这个例子中,a > b
是条件。如果条件为 true
,max
将被赋值为 a
;否则,max
将被赋值为 b
。
示例2:嵌套的三元运算符
你也可以嵌套使用三元运算符来处理多个条件:
public class NestedTernaryOperator {
public static void main(String[] args) {
int a = 5;
int b = 10;
int c = 15;
// 使用嵌套的三元运算符找出最大值
int max = (a > b) ? (a > c ? a : c) : (b > c ? b : c);
System.out.println("The maximum value is: " + max);
}
}
在这个例子中,我们嵌套了三元运算符来比较三个值 a
、b
和 c
。
原码反码补码
隐式转换(一般小转大):前面补零
强制转换(一般大转小):前面去掉零
foreach
在Java中,foreach 循环(增强型 for 循环)是一种简洁的方法,用于遍历数组或集合。它简化了传统的 for 循环,并且不需要使用索引变量。以下是一些示例,展示了如何使用 foreach 循环遍历数组和集合。
遍历数组
示例代码
public class ForEachExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
// 使用 foreach 循环遍历数组
for (int number : numbers) {
System.out.println(number);
}
}
}
在这个示例中,number 是数组 numbers 中的每一个元素。在每次循环迭代中,number 都被赋值为数组中的下一个元素。
switch简化
二维数组
二维数组遍历
arr3.length是行数
arr3[1].length是每一行的列数。
类和对象
封装
private
变量前面+this 就是成员位置的name;如果不加一般遵循就近原则。
标准的类的写法步骤
分为四步:
1、属性。
2、空参,可以用快捷键alt+inset。
3、带有全部参数的构造,可以用快捷键alt+inset。
4、get和set方法,一般对private的属性进行,可以用快捷键alt+inset。
package com.heima.demo1;
public class text1 {
//1、属性
private String username ;//e
private String password;
private String email;
private String gender;
private int age;
//2、空参,可以用快捷键alt+inset
public text1(){};
//3、带哟全部参数的构造,可以用快捷键alt+inset
public text1(String username,String password,String email,String gender,int age){};
//记得做赋值
this.username=username;
this.password=password;
this.email=email;
this.gender=gender;
this.age=age;
//4、get和set方法,一般对private的属性进行,可以用快捷键alt+inset
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Java小试一试小游戏
奥特曼打小怪兽
需要有两个class 一个是role.java 另一个是play1.java
play1.java 内容
package palyStart;
import java.util.Random;
public class paly1 {
public static void main(String[] args) {
role role1=new role("奥特曼",30,'女');
role role2=new role("怪兽",30,'男');
role1.showRoleInfo();
role2.showRoleInfo();
while (true)
{
role1.attack(role2);
if(role2.getBlood()==0)
{
System.out.println(role2.getUsername()+"已经被KO!");
break;
}
role2.attack(role1);
if(role1.getBlood()==0)
{
System.out.println(role1.getUsername()+"已经被KO!");
break;
}
}
}
}
role.java 中的内容
package palyStart;
import java.util.Random;
public class role {
private String username;
private int blood;
private char gender;
private String face;//长相随机
String[] boyfaces= {"风流俊雅","气字轩昂","相貌英俊","五官端正","相貌平平"," -塌糊涂","面目狰狞"};
String[] girlfaces ={"美奂绝伦","沉鱼落雁","婷婷玉立","身材娇好","相貌平平","相貌简陋","惨不忍睹"};
public role() {
}
public role(String username, int blood,char gender) {
this.username = username;
this.blood = blood;
this.gender=gender;
setFace(gender);
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
public String getFace() {
return face;
}
public void setFace(char gender) {
if(gender=='男')
{
Random r=new Random();
int index=r.nextInt(boyfaces.length);
this.face=boyfaces[index];
} else if (gender=='女') {
Random r=new Random();
int index=r.nextInt(girlfaces.length);
this.face=girlfaces[index];
}
else{
this.face="怪物";
}
}
/**
* 获取
* @return username
*/
public String getUsername() {
return username;
}
/**
* 设置
* @param username
*/
public void setUsername(String username) {
this.username = username;
}
/**
* 获取
* @return blood
*/
public int getBlood() {
return blood;
}
/**
* 设置
* @param blood
*/
public void setBlood(int blood) {
this.blood = blood;
}
public void attack(role role)
{
//输出一个攻击的效果
String[] attacks_desc={
"%s使出了一招[背心钉],转到对方的身后,一掌向%s背心的灵台穴拍去。",
"%s使出了一招[游空探爪],飞起身形 自半空中变掌为抓锁向%s。",
"%s大喝一声,身形下伏,一招[劈雷坠地],捶向%s双腿。",
"%s运气于掌, -瞬间掌心变得血红,一式[掌心雷],推向%s。",
"%s阴手翻起阳手跟进,一招[没遮拦] ,结结实实的捶向%s。",
"%s.上步抢身,招中套招,-招[劈挂连环] ,连环攻向%s"};
Random r=new Random();
int index=r.nextInt(attacks_desc.length);
String KungFu=attacks_desc[index];
System.out.printf(KungFu,this.getUsername(),role.getUsername());
System.out.println();
//随机造成1-20的伤害
int hurt=r.nextInt(20)+1;
//剩余血量
int remainblood= role.getBlood()-hurt;
if(remainblood<0)
{
remainblood=0;
}
role.setBlood(remainblood);
//受伤的描述
// injured受伤描述:
String[] injureds_desc={
"结果%s退了半步,毫发无损",
"结果给%s造成一处瘀伤",
"结果一击命中,%s痛得弯下腰",
"结果%s痛苦地闷哼了一声,显然受了点内伤",
"结果%s摇摇晃晃,跤摔倒在地",
"结果%s脸色一下变得惨白,连退了好几步",
"结果「轰」的一声, %s口中鲜血狂喷而出",
"结果%s-声惨叫,像滩软泥般塌了下去"};
if(remainblood>=90)
{
System.out.printf(injureds_desc[0],role.getUsername());
} else if (remainblood>=80&&remainblood<90) {
System.out.printf(injureds_desc[1],role.getUsername());
} else if (remainblood>=70&&remainblood<80) {
System.out.printf(injureds_desc[2],role.getUsername());
} else if (remainblood>=60&&remainblood<70) {
System.out.printf(injureds_desc[3],role.getUsername());
} else if (remainblood>=40&&remainblood<60) {
System.out.printf(injureds_desc[4],role.getUsername());
} else if (remainblood>=20&&remainblood<40) {
System.out.printf(injureds_desc[5],role.getUsername());
}else if(remainblood>10&&remainblood<20)
{
System.out.printf(injureds_desc[6],role.getUsername());
}else {
System.out.printf(injureds_desc[7],role.getUsername());
}
System.out.println();
// //this 表示动作方法的调用者
// System.out.println(this.getUsername()+"打了"+role.getUsername()+",造成了"+hurt+"的伤害,"+role.getUsername()+"还剩下"+role.getBlood()+"血量");
}
public void showRoleInfo() {
System.out.println("姓名为:"+getUsername());
System.out.println("血量为:"+getBlood());
System.out.println("性别为:"+ getGender());
System.out.println("长相为:"+ getFace());
}
}
运行结果:
end,继续加油哦!!!!