Java学习day03-变量命名、进制转换、原反补码、数据类型及转换、运算符、键盘输入

变量命名

命名规范:编译器虽然不检查但是需养成程序员的基本职业素质。

  • 项目:全小写
  • 包:全小写
  • 类:大驼峰(每个单词首字母大写)
  • 变量:小驼峰(第一个单词全小写,从第二个单词的首字母大写)
int age;
String name;
String studentName;
int studentAge;

== 语法规范:强制要求 ==

  • 可以使用字母、数字、下划线_、美元符号$
  • 不能以数字开头
  • 不能使用Java关键字和保留字

关键字:就是一个单词被Java占用了,是编码时用来构成程序结构的,有特定含义,用在特定的地方。在集成开发环境中,有高亮演示。

保留字:goto const:是C/C++的关键字,Java的底层是使用C/C++实现的

进制转换

计算机时基于数字电路的,底层时基于二进制

位:bit,最小单位
字节:byte,1 byte=8 bit(1B=8b),二进制中的基本数据单位
1 kb=1024 b
1 mb=1024 K
1 gb=1024 M
1 tb=1024 g

十进制:
十个基数:0-9
逢十进位

R进制:
R个基数
逢R进位

十进制			二进制			 八进制		十六进制
0				0000			0
1				0001			1
2				0010			2
3				0011			3
4				0100			4
5				0101			5
6				0110			6
7				0111			7
8				1000			10			8
9				1001						9
10				1010						A

15											F
16											10

十进制:
1234:(10)=4* 10^0 +3 * 10^3 +2*10^2+ 1 *10^3
二进制转成十进制:
1011:(2)=1 * 2^0 + 1 * 2^1 +0 *2^2 +1 *2^3=11:(10)
R进制转成对应的十进制:
权:按权相加

十进制转二进制:
11/2=5…1
5/2=2…1
2/2=1…0
1/2=0…1
余数反过来写 1011–(2)

十进制转R进制:
辗转相除:

八进制:
八个基数,逢8进一 0-7

十六进制:
十六个基数,逢16进一 0-9,A,B,C,D,E,F

八、十六进制的转换
11011(2)
33(8)
1B(16)

原码、反码、补码

计算机为了区分正负数,最高位,不是代表权重,而是符号位(0代表正数,1代表负数)

原码:最高位是符号位,其它位代表实际值的权
+7 00000111
-7 10000111

反码:
+7 00000111 正数的反码和原码相同
-7 11111000 负数的符号位不变,其它位按位取反(0变1,1变0)

补码:
+7 00000111 正数的原反补都相同
-7 11111001 负数补码是反码+1

计算机存储数据使用的是补码,减法运算都可以转成加法做
7-2=7+(-2)

-2的原码 10000010
-2的反码 11111101
-2的补码 11111110

	00000111
  + 11111110
  -------------------------
   100000101
   
   00000101(2)=5(10)

内存中一个字节存储11111101,对应的十进制的数是多少
11111101:最高位1,负数,补码
-1编程反码 11111100
变成原码 10000011

byte 1个字节 -128 127

00000000 0
01111111(2) 127(10)

11111111 补码 (负数最大)
11111110 反码
10000001 原码 -1(10)
10000000 (负数最小) -128

数据类型范围

在这里插入图片描述

public static void main(String[] args) {
		//字面值常量
		System.out.println(1);
		System.out.println(1.1);
		System.out.println('a');
		
		int a=123;
		System.out.println(Long.MAX_VALUE);
		//整型字面值常量默认是int,给long赋值后面L,大小写都可以,建议使用大写
		long b=99999999999L;
		
		double d=1.1;
		//浮点数字面值常量默认是double,后面添加F
		float e=1.1F;
	}

赋值运算符

=	等号右边的只给左边

变量=字面值常量;

变量=有值的另一个变量;

变量=表达式;

表达式就使用运算符连接的式子
public static void main(String[] args) {
		//同时声明多个变量,只给c赋值
		int a,b,c=1;
		a=b=c;
		System.out.println("a="+a+",b="+b+",c="+c);
		
		int d=1,e=1,f=1;
		int i,j,k;
		i=j=k=1;
	}

算术运算符

”+“ 加 "-"减 *乘法 /除法 %模运算(求余数)

public static void main(String[] args) {
		int numA=10,numB=3;
		//+能做算术加法,就是算术运算
		System.out.println(1+1);
		//不能做算法运算,就是字符拼接	"10"+"abcdef"
		System.out.println(numA+"abcdef");
		System.out.println(1+1+"aaa");
		System.out.println("aaa"+1+1);
		//运算符有优先级:没有必要记忆,使用()改变优先
		//无论多少层都使用(),先算内层,再算外层
		System.out.println((1+(5+6)*7)*3);
		System.out.println(numA+"+"+numB+"="+(numA+numB));
		System.out.println(numA+"-"+numB+"="+(numA-numB));
		System.out.println(numA+"*"+numB+"="+(numA*numB));
		System.out.println(numA+"/"+numB+"="+(numA/numB));
		System.out.println(numA+"%"+numB+"="+(numA%numB));
		//整数除以整数只有整数商,除不尽没有小数
		System.out.println(10/3);
		System.out.println(10/3.0);
		System.out.println(10.0/3);
	}
+=   -=   *=   /=   %=
从右往左运算

//b=b+5;
b+=5;

目:运算符在运算时,参与操作的运算数的格式 
	单目运算符
			+正
			-负
			++ 
			--
	双目运算符
	三目运算符

++	自己+1
--  自己-1
public static void main(String[] args) {
		
//		int i=1;
//		//无论在前还是在后,这条语句执行结束以后,一定会+1
//		//i++;
//		//++i;
//		System.out.println(i);
		
		
//		int j=1;
//		//++在后:先用后加,输出使用的还是原来的值,输出使用结束以后再+1
//		System.out.println(j++);
//		System.out.println(j);
		
		
//		int k=1;
//		//++在前:先加后用,先对k+1,在输出使用+1以后的的值
//		System.out.println(++k);   //k=2
//		System.out.println(k);     //k=2
		
		
//		int m=1;
//		//m=1;	s=1   m=2
//		//s=1+2       m=3
//		//s=1+2+3     m=4
//		int s=(m++)+(m++)+(m++);
//		System.out.println(s);
//		System.out.println(m);
		
		
		int n=1;
		// n=1 r=2 n=2
		//r=2+3    n=3
		//r=2+3+4  n=4
		int r=(++n)+(++n)+(++n);
		System.out.println(r);
		System.out.println(n);
	}

键盘输入

//声明包:告诉系统,当前包在哪个保重
package com.woniuxy.test;

//导入包:当前类要使用其它类,告诉系统,你要用的类在哪个包中
//一定要写在:package之后,定义类之前
import java.util.Scanner;

public class MyTest08 {

	public static void main(String[] args) {
		//控制输出:JRE有类库,实现了编程中常用的方法
		//键盘输入:要使用Scanner这个类
		//1、导入包:
		//2、创建Scanner类的对象	
		//类(数据类型) 对象(变量)
		Scanner scanner=new Scanner(System.in);
		System.out.println("输入年龄:");
		//调用方法,将键盘输入的数据,赋值给变量
		int age=scanner.nextInt();
		System.out.println("age:"+age);
		
	}

}
//方法是一个操作							加法运算
	//方法参数:参与操作的数					加数、被加数
	//方法返回值:方法调用结束,给调用者一个数据		计算结果,和
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		System.out.println("输入姓名");
		String name=scanner.next();
		System.out.println("输入年龄");
		//输入的数据,没有赋值给变量保存
		int age=scanner.nextInt();
		System.out.println("输入成绩:");
		double socre=scanner.nextDouble();
		System.out.println("name:"+name);
		System.out.println("age:"+age);
		System.out.println("socre:"+socre);
		
	}

基本数据类型——类型转换

前提:兼容数据类型才能转换,与boolean类型无关

自动类型转换(隐式转换)
目标类型大于源类型:	大空间变量(目标类型)=小空间变量(源类型)	
	byte short int long
	float  double
转换规则:
	byte,short,char—int—long—float—double
	byte,short,char相互之间补转换,他们参与运算首先转换为int类型
public static void main(String[] args) {
//		int i=1;
//		long j=i;
		
		//整数的字面值常量是int
		//long i=9999999999L;
		
		//字面值常量是int,如果字面值常量没有超出byte的范围,可以赋值
		byte b1=123;
		//error
		//byte b2=128;
		//这个地方是变量赋值,有强制类型检查
		int i=123;
		//error
		//byte b3=i;
	}
public static void main(String[] args) {
		int i=1;
		float f=1.1F;
		//=int+float结果float
		//error
		//int m=i+f;
		float f2=i+f;
		double d=1.1;
		//=int+float+double结果double
		double d2=i+f+d;
		
		
//		byte b1=1;
//		byte b2=2;
//		byte b3=b1+b2;
		
		int m=1;
		short s1=1;
		//error
		//short s2=m;
		short s2=5;
		//error
		//short s3=s1+s2;
		
	}
强制类型转换(显式转换)
目标类型小于源类型:

目标类型(接收)=(强制转换的类型)源类型

强制类型转换可能丢失精度
public static void main(String[] args) {
		byte b1=1;
		byte b2=2;
		byte b3=(byte)(b1+b2);
		System.out.println(b3);
		
		int i=1;
		long j=1;
		i=(int) j;
		
		//精度丢失
		int a=123;
		double d=12.345;
		//浮点数强制转换成小数,会截断小数部分
		a=(int) d;
		System.out.println(a);
		
		
		int m=130;
		byte b4=(byte) m;
		System.out.println(b4);
	}

字符和数字时兼容类型

public static void main(String[] args) {
		//Java中的字符在内存中是两个字节
		//键盘接收输入字符
		Scanner scanner=new Scanner(System.in);
		System.out.println("输入一个字符");
		//scanner.next():接收字符串
		//charAt()是String的方法,charAt(0)就是获取字符串的第一字符
		char c= scanner.next().charAt(0);
		System.out.println(c);
	}
public static void main(String[] args) {
		//字符在内存中存档,仍然是01编码。对应一个整数
		//'a' 97	'A' 65  '0'  48
		//ASCII编码
		char c = '1';
		System.out.println(c);
		int i=c;
		System.out.println(i);
		System.out.println((int)c);
		
		char c1='中';
		System.out.println(c1);
		System.out.println((int)c1);
	}
public static void main(String[] args) {
//		int i=97;
//		char c=(char) i;
//		System.out.println(c);
		
		char c1='a';
		//常量不超范围
		int i=1;
		c1='a'+1;
		System.out.println(c1);
		
		char c2=(char) ('a'+i);
		System.out.println(c2);
		
		char c3='中';
		c3='中'+5;
		System.out.println(c3);
	}

练习

  1. 交换两个数
  2. 同学A的数学成绩是90分,同学B的数学成绩与A相同,输出B的成绩
  3. 从控制台输入同学A的三门课程成绩(数学、语文、英语),编写程序实现(语文与数学分数差;3门课的平均分)
  4. 根据天数(78天)计算周数和剩余天数
  5. 已知圆的半径radius=2.5,求其面积
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值