欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JAVA学习(1天) #来源:异步图书

程序员文章站 2022-06-28 16:30:16
第三章 基础语法3.1 常量变量常量:值永远不会发生变化的量,可以表示固定的数字,字符,字符串定义常量的关键字:final例如:final double PII=3.14;final char MALE=‘M’,FEMALE=‘F’;final double PI=value;value=3.14;PI是常量名称,常量名称一般为大写value是常量的值final表示该量只能被赋值一次通常我们希望定义一个类常量,使得其能在多个方法中使用但注意的是:类常量的定义在main方法外部p...

第三章 基础语法
3.1 常量变量

常量:值永远不会发生变化的量,可以表示固定的数字,字符,字符串
定义常量的关键字:final
例如:
final double PII=3.14;
final char MALE=‘M’,FEMALE=‘F’;

final double PI=value;
value=3.14;

PI是常量名称,常量名称一般为大写
value是常量的值
final表示该量只能被赋值一次

通常我们希望定义一个类常量,使得其能在多个方法中使用
但注意的是:类常量的定义在main方法外部

public class first{
/**在这一行**/
		/*这是一个main方法*/
		public static void main(String[] args){
		/*输出此消息*/
		System.out.println("第一段Java程序");
		}
}

变量:在运行过程中值随时会发生变化的量
在运行java程序过程中,变量内存空间中的值是变化的,这个内存空间就是变量的实体,这个内存空间也叫变量名

该区域的数据可以在同一数据类型范围内不断变化
内存空间是为了存储变量,所以即使申请了内存空间,变量也不一定有值,要想有值,一定要赋值

声明变量的基本格式:
typeSpencifer varName=value;
typeSpencifer可以使java语言中所有合法的数据类型
varName是变量名,变量常量的最大区别在于value的值的可有可无,还可以对其进行动态初始化
每个变量在使用前必须先声明再赋值才能使用
变量名必须是一个有效的标志符
不可以与关键字重复
建议使用有意义的单词或单词组合

变量又分为:局部变量(在一个方法快或一个函数内起作用),全局变量

局部变量运用实例

package one;

public class Zhen {
	public static void main(String args[])
	{
		//正方形面积计算
		double a1=12.2;
		double a2=a1*a1;
		System.out.println("正方形的面积为"+a2);
	}

}

全局变量实例

package one;

public class Zhenquanjvbianliang {
	int z1=2;  //定义全局变量z1并赋值
	boolean e;  //定义变量e 但不知道是用来干什么???

	public static void main(String[] args) {
		int z1=111;  //对z1进行重新赋值
		System.out.println("打印数据z="+z1);
		
		// TODO 自动生成的方法存根

	}

}

全局变量可以在局部里面被改变

3.2 数据类型
JAVA学习(1天) #来源:异步图书
八种类型的取值范围

数据类型 位数 字节数 数值范围
byte 8位 1字节 -128~127
short 16位 2字节 -32768~32767
int 32位 4字节 -2的31次~2的31次-1
long 64位 8字节 -2的63次~2的63次-1
float 32位 4字节 3.4e-45~1.4e38直接赋值需要在数字后面加上f或F
double 64位 8字节 4.9e-324~1.8e308 赋值时可加d或D也可不加
boolean 只有true和false两个取值
char 16位 2字节 存储Unicode码 用单引号赋值

java决定了每种简单类型的大小 不会随机器结构的变化而变化

package come.inspur.ch2;

public class IntegerDemo {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		
		byte myByte = 127;
		short myShort = 32767;
		int myInt = 678;
		long myLong = 7890;
		long myLong1 = 33333333;
		System.out.println(myByte+"myByte的类型为:"+getType(myByte));
		System.out.println(myShort+"myShort的类型为:"+getType(myShort));
		System.out.println(myInt+"myInt的类型为:"+getType(myInt));
		System.out.println(myLong+"myLong的类型为:"+getType(myLong));
		System.out.println(myLong1+"myLong1的类型为:"+getType(myLong1));

	}
/**
 * 声明公用方法返回参数的数据类型
 * @param o
 * @return
 */
	public static String getType(Object o) {
		return o.getClass().toString();
	}
}

JAVA学习(1天) #来源:异步图书
第十二行 如果数据范围超出了int 的最大值 要在数据后面加l或L就不会报错
打印显示数据的具体类型 用公共的方法getType


public class zhengxing
{
	public static void main(String[] args) 
	{
		//下面代码是正确的,系统会自动把56当成byte类型处理
		byte a = 56;
		/*
		下面代码是错的,系统不会把9223372036854775807当成long类型处理,
		所以超出int的表数范围,从而引起错误
		*/
		//long bigValue = 9999999999999;
		//下面代码是正确的,在巨大的整数常量后使用L后缀,强制使用long类型
		long bigValue2 = 9223372036854775807L;	
		//以0开头的整数常量是8进制的整数
		int octalValue = 013;
		System.out.println(octalValue);
		//以0x或0X开头的整数常量是16进制的整数
		int hexValue1 = 0x13;
		int hexValue2 = 0XaF;
		System.out.println(hexValue1);
		System.out.println(hexValue2);
	}
}

浮点类型
浮点数必须带一个小数点 不然会被当成int类型来处理

只有浮点类型的数才可以用科学计数法来表示
52000000是int类型 但是52E6是浮点类型

数据类型 所占位数 数值的范围
float 32 -3.403E38~3.403E38
double 64 -1.798E308~1.798E308
package come.inspur.ch2;

public class FloatDemo {
	public static void main(String[]args) {
		float myFloat=56.67F;  //后面一定要跟F  不然会报错
		double myDouble=56.98;
				System.out.println("myFloat:"+myFloat);
				System.out.println("myDouble:"+myDouble);
	}

}

字符类型
char 用于存放单个字符的数据类型,占两个字节,采用unicode编码
例如‘1’表示字符1而不是数字1
字符类型分为字符常量和字符变量
字符常量:用‘ ’ 括起来的一个字符 如‘A’
字符变量:在机器中占16位,其范围为0~65535
如char c=‘a’
变量c为char型,且赋初值为a

package come.inspur.ch2;

public class CharDemo {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		char myChar='a';
		char myChar1=97;
		System.out.println("myChar:"+myChar);
		System.out.println("myChar1:"+myChar1);
	}

}

转义字符 含义
\b 后退一格
\t 后退一大格
\n 换行
\f 换页
\\ 表示一个斜杠
\’ 表示一个单引号
\" 表示一个双引号
\r 接受键盘输入 相当于按回车

布尔类型
通过Boolean可定义布尔类型的变量,只有true和false两个值
分别代表逻辑中的真和假,Boolean值只能用作布尔运算,通常用在流程控制结构中作为判断条件

boolean flag=true;
if(flag){
System.out.println("如果flag值为true,则控制台打印此句话");

数据类型的转换
boolean类型与其他类型不能进行类型的转换,自动类型转换与强制类型转换都不可以

Java并不会把这个较小的整数常量 直接当成一个大的类型常量来处理,依然会当成小的类型常量来处理,但是此时这个小类型的变量的值会自动将类型转换为大的类型

自动类型转换:基本数据类型中,按照精度从低到高的顺序其优先关系为byte>short>int>long>float>double

例如,使用int类型的变量可以自动为float类型的变量赋值,此时int类型会自动转化为float类型

int num1=124;
float num2=num1;
System.out.println("num1:"+num1);
System.out.println("num2:"+num2);

输出结果为124
124.0

关系式
byte+short+char +int == int
byte+short+int+char +long==long
byte+short+int+char+long +float ==float
byte+short+int+char+long+float +double =double

package come.inspur.ch2;

public class TypeTransferDemo01 {
	/**
	 * 自动类型转换实例   自动类型转换规则
	 * @param args
	 */

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		byte b=127;
		int num=789;
		float f = 234;
		double d = 45;
		System.out.println("byte类型数据和int类型数据相乘:"+(b*num)+",结果的数据类型为:"
		+getType( (b*num)));
		System.out.println("byte类型数据和float类型数据相乘:"+(b*f)+",结果的数据类型为:"
		+getType( (b*f)));
		System.out.println("int类型数据和double类型数据相乘:"+(d*num)+",结果的数据类型为:"
		+getType( (d*num)));
		

	}
/**
 * 声明公用方法返回参数的数据类型
 * @param o
 * @return
 */
	public static String getType(Object o) {
		return o.getClass().toString();
		
	}
}




byte类型数据和int类型数据相乘:100203,结果的数据类型为:class java.lang.Integer
byte类型数据和float类型数据相乘:29718.0,结果的数据类型为:class java.lang.Float
int类型数据和double类型数据相乘:35505.0,结果的数据类型为:class java.lang.Double

布尔类型例子

package three;

public class Typeboolean {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		
			boolean b;
			b=false;
			System.out.println("b的值是"+b);
			b=true;
			System.out. println("b的值是"+b);
			if(b)System.out.println("如果b的值是true,会显示这行文本");
	}

}

b的值是false
b的值是true
如果b的值是true,会显示这行文本

测试 定义两个布尔类型并赋值

强制类型转换
将高精度的数值赋给低精度的数值变量 必须使用强制类型转换
强制类型转换有一定语法要求 规则是
(类型名称) 要转换的值或变量

package come.inspur.ch2;

public class TypeTransferDemo02 {
	/**+
	 * 强制类型转换实例
	 * @param args
	 */

	public static void main(String[] args) {
		// TODO- 自动生成的方法存根
		//强制类型转换代码演示
		float f = 234;
		double b=45;
		
		//将float类型直接赋给int时会报错
		//int num1= f;
		
		//应该这样操作
		int mun_1=(int)f;
		//将double类型赋值给float类型 也必须进行强制类型转换
		float mun_b = (float)b;
		System.out.println("mun_1:"+mun_1+",数据类型为"+getType(mun_1));
		System.out.println("mun_b:"+mun_b+",数据类型为"+getType(mun_b));
		

	}
	
	/**声明公用方法返回参数类型
	 * @param o
	@return */
			 public static String getType (Object o) {
		 return o.getClass().toString();
	 }
}
mun_1:234,数据类型为class java.lang.Integer
mun_b:45.0,数据类型为class java.lang.Float

布尔例子

package three;

public class Typeofbooleaneg1 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		


		boolean b1 = true;
		boolean b2 = false;
		//下面代码将出现错误:字符串不能直接变成boolean型的值
		//boolean b3 = "true";
		//使用boolean和字符串进行连接运算,boolean会自动转换成字符串
		String str = true + "";
		//下面将输出true
		System.out.println(str);
	}



	}


输出 true

使用强制类型转换可能会导致精度的缺失

运算符

按照操作数目分 有
一元运算符 ++ - -
二元运算符 + - < > =
三元运算符 ? :

按功能分
算术运算符 加减乘除取余
位运算符 $ | ^ ~ >> << >>>
逻辑运算符 ! && ||
关系运算符 > < >= <= == !=
赋值运算符 =
扩展赋值运算符 += -= *= =
字符串连接运算符 +

基本运算符实例

package three;

public class Operatordemo1 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int a = 6;
		int b = 27;
		int c = 3;
		int d = (int)b/a;
		System.out.println(a-b);
		System.out.println(a*b);
		System.out.println(a/b);
		System.out.println(a/c);
		System.out.println(d);
		

	}

}

实例二
copy

package three;
import java.util.Scanner;

public class Operatordemo2 {

public static void main(String[] args) {
	// TODO 自动生成的方法存根
	   Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个英文字符串或解密字符串");
        String password = scan.nextLine();// 获取用户输入
        char[] array = password.toCharArray();// 获取字符数组
        for (int i = 0; i < array.length; i++) {// 遍历字符数组
            array[i] = (char) (array[i] ^ 20000);// 对每个数组元素进行异或运算
        }
        System.out.println("加密或解密结果如下:");
        System.err.println(new String(array));// 输出密钥
}

}

取余运算符
取余运算符一般用于除法中,它的取值不是商,而是余数
5/2 取余运算符取得是余数1

使用递增和递减运算符

package three;

public class Dione {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int a = 199;
		int b = 1009;
		System.out.println(a++);
		System.out.println(a);
		System.out.println(++a);
		System.out.println(a);
		System.out.println(b--);
		System.out.println(--b);
		System.out.println(b);

	}

}

a++会直接输出原数 但是加一
++a会输出+1后的数字

package three;

public class Dionedemo1 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int x=2;
		int y=3;
		int x1=7;
		int y1=8;
		System.out.println(x1+x++);
		System.out.println(x);
		
		System.out.println(++y-x);
		System.out.println(y);
		System.out.println(x);
		System.out.println(x1---y);
		System.out.println(y);
		System.out.println(--y1*y);

	}

}

减减y1*y首先 算的是自减后是乘

package three;
import java.math.BigDecimal;
public class Accultyfloat {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		
		
		
		
		
		        double money = 2;// 现有金额
		        double price = 1.1;// 商品价格
		        double result=money - price;
		        System.out.println("非精确计算");
		        System.out.println("剩余金额:"+result);// 输出运算结果
		        // 精确浮点数的解决方法
		        BigDecimal money1 = new BigDecimal("2");// 现有金额
		        BigDecimal price1 = new BigDecimal("1.1");// 商品单击
		        BigDecimal result1=money1.subtract(price1);
		        System.out.println("精确计算");
		        System.out.println("剩余金额:"+result1);// 输出精确结果
		    }
		

			
		

	}

package three;

public class Guanxi {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		
		int d=10;
		int k=12;
		int j=111;
		System.out.println(d<k||k<j);
		System.out.println(d>k&&k<j);
		System.out.println(!(d>k));

	}

}

实现2的累乘

package three;
import java.util.Scanner;
public class Guanxiyunsuanfu {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		
		
		
		
		  
		        Scanner scan=new Scanner(System.in);// 创建扫描器
		        System.out.println("请输入一个整数");
		        long number = scan.nextLong();// 获取输入的整数
		        System.out.println("你输入的数字是:"+number);
		        System.out.println("该数字乘以2的运算结果为:"+(number<<1));
		        System.out.println("该数字乘以4的运算结果为:"+(number<<2));
		        System.out.println("该数字乘以8的运算结果为:"+(number<<3));
		        System.out.println("该数字乘以16的运算结果为:"+(number<<4));
		    }
		

		
		
		
		
		

	}



表示a非

package fanli;

public class data15
{
public static void main(String[] args)
{
int a=2;
System.out.println("a 非的结果是:"+(~a));
}
}

2取反为-3
假设2以一个字节存储,则其补码为:00000010(正数的原码和补码是一样的),则取反后得到11111101这么一个补码,将这个补码转换成原码得到的结果就是-3了。转换过程如下:
11111101--将该数减1求反码得 11111100--除符号位外每位取反求原码得10000011,最高位表示符号位

条件运算符
作用 决定把哪个值赋值给前面的变量
语法格式
变量布尔表达式 ? 表达式1:表达式2

package three;

public class Judgegrade {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int score = 68;
		String mark = (68>60) ? "及格":"不及格";
				System.out.println("考试成绩如何:"+mark);
		
		

	}

}

package three;

public class Tiaodemo1 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		
		
		        char x = 'X';   
		        int i = 0;   
		        System.out.println(true ? x : 0);    
		        System.out.println(false ? i : x);    
		    }   
		 

	}

输出  x
     88


直接复制的  没看懂`在这里插入代码片`
import java.util.Scanner;

public class VariableExchange {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);// 创建扫描器
        System.out.println("请输入变量A的值");
        long A = scan.nextLong();// 接收第一个变量值
        System.out.println("请输入变量B的值");
        long B = scan.nextLong();// 接收第二个变量值
        System.out.println("A=" + A + "\tB=" + B);
        System.out.println("执行变量互换...");
        A = A ^ B;// 执行变量互换
        B = B ^ A;
        A = A ^ B;
        System.out.println("A=" + A + "\tB=" + B);
    }
}


public class kuozhan
{
	public static void main(String[] args) 
	{
		//定义一个byte类型的变量
		byte a = 5;
		//下面语句出错,因为5默认是int类型,a + 5就是int类型。
		//把int类型赋给byte类型的变量9,所以出错。
		a = a + 5;
		//定义一个byte类型的变量
		byte b = 5;
		//下面语句将不会出现错误
		b += 5;
	}
}

public class OperatorSign {
	public static void main(String[] args) {
		int a = 3, b = 4;
		int intA = a / b; 				// 根据基本类型自动转换规则,除数与被除数都是整数,
		float intB = a / b;
		float intC = a / (b * 2.0f); 		// 对于声明为float类型的数字,数字后加f,
		double intD = a / (b * 2.0d); 	// 对于声明为double类型的数字,数字后加d.
		int a1 = 10;
		int b1 = 3;
		double c = 2;
		System.out.println("(intA=a/b),intA=" + intA);
		System.out.println("(intB=a/b),intB=" + intB);
		System.out.println("(intC=a/(b*2.0f)),intC=" + intC);
		System.out.println("(intD=a/(b*2.0d)),intD=" + intD);
		System.out.println(a1 + "/" + b1 + "=" + (a1 / b1));
		System.out.println(a1 + "%" + b1 + "=" + (a1 % b1));
		System.out.println(a1 + "/" + c + "=" + (a1 / c));
		System.out.println(a1 + "%" + c + "=" + (a1 % c));
		int x = 12;
		int a2 = x + x++;  		//定义一个自增的变量
		System.out.println("a2=" + a2);
		System.out.println("x=" + x);
		int b2 = x++ + x;
		System.out.println("b2=" + b2);
		System.out.println("x=" + x);
		int c2 = x + x--;			//定义一个自减的变量
		System.out.println("c2=" + c2);
		System.out.println("x=" + x);
		int d = x + --x;
		System.out.println("d=" + d);
		System.out.println("x=" + x);
	}
}

package three;

public class Daimafuzhi {

public static void main(String[] args) {
	// TODO 自动生成的方法存根
	
	
			int a = 3, b = 4;
			int intA = a / b; 				// 根据基本类型自动转换规则,除数与被除数都是整数,
			float intB = a / b;
			float intC = a / (b * 2.0f); 		// 对于声明为float类型的数字,数字后加f,
			double intD = a / (b * 2.0d); 	// 对于声明为double类型的数字,数字后加d.
			int a1 = 10;
			int b1 = 3;
			double c = 2;
			System.out.println("(intA=a/b),intA=" + intA);
			System.out.println("(intB=a/b),intB=" + intB);
			System.out.println("(intC=a/(b*2.0f)),intC=" + intC);
			System.out.println("(intD=a/(b*2.0d)),intD=" + intD);
			System.out.println(a1 + "/" + b1 + "=" + (a1 / b1));
			System.out.println(a1 + "%" + b1 + "=" + (a1 % b1));
			System.out.println(a1 + "/" + c + "=" + (a1 / c));
			System.out.println(a1 + "%" + c + "=" + (a1 % c));
			int x = 12;
			int a2 = x + x++;  		//定义一个自增的变量
			System.out.println("a2=" + a2);
			System.out.println("x=" + x);
			int b2 = x++ + x;
			System.out.println("b2=" + b2);
			System.out.println("x=" + x);
			int c2 = x + x--;			//定义一个自减的变量
			System.out.println("c2=" + c2);
			System.out.println("x=" + x);
			int d = x + --x;
			System.out.println("d=" + d);
			System.out.println("x=" + x);
		}
	


}

JAVA学习(1天) #来源:异步图书
尽量用圆括号来控制优先级

JAVA学习(1天) #来源:异步图书
字符串的初始化
JAVA学习(1天) #来源:异步图书
JAVA学习(1天) #来源:异步图书
JAVA学习(1天) #来源:异步图书
JAVA学习(1天) #来源:异步图书
JAVA学习(1天) #来源:异步图书
JAVA学习(1天) #来源:异步图书
JAVA学习(1天) #来源:异步图书

强制类型转换
package three;

public class Daimaqiangzhi {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		double doublenum = 2.333;
		int intnum = 0;
		intnum =(int) doublenum;
		System.out.println(intnum);
		

	}

}

将浮点数强制转化为整型数

package three;

public class Daimaqiangzhi2 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		float num1 = 2.333f;
		int num2 = 3;
		int num3 = 0;
		num3 = (int) num1+num2;
		System.out.println(num3);
		
	}

}

注意点
1 定义常量
主要使用final关键字(灵活使用Static关键字)来进行常量的定义,当常量被设定后,一般情况下不允许更改
定义Java常量时,就要对常量进行初始化
关键字final不仅可以用来修饰基本数据类型的常量,而且可以用来修饰对象的引用或方法,数组就是对象引用
常量取名一般为大写,是为了和变量做区分

2 char
char类型用单引号引起来 字符串用双引号引起来
Java中单引号,双引号,反斜线都有特殊用途,若一个字符串中包含这些特殊字符,应该使用转义字符
表示c:\daima 应该写成 c:\daima

3 整数不可以除以0

课后练习
摄氏温度转华氏温度

package three;
import java.util.Scanner;
public class Zuoyeteansform {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入温度的值:");
		long A = scan.nextLong();
		double B = 0;
		B = A*33.8;
		System.out.println(B);
		
		
		

	}

}

计算圆的面积和周长

package three;
import java.util.Scanner;

public class Zuoyetransform2 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner scan = new Scanner (System.in);
		System.out.println("请输入半径:");
		double A = scan.nextLong();
		double Square = 0;
		double Zhouchang = 0;
		final double Pi = 3.1415926;
		
		
		Zhouchang = 2*Pi*A;
		Square = Pi* A * A;
		System.out.println(Zhouchang);
		System.out.println(Square);
		

	}

}

本文地址:https://blog.csdn.net/weixin_52006337/article/details/113933747

相关标签: Java学习