文章目录
JAVA编程基础
变量与标识符
数学名词
(变数或变量):是指没有固定的值,可以改变的数.变量以非数字的符号来表达,一般用拉丁字母.变量是常数的相反.变量的用处在于能一般化描述指令的方式.
计算机解释
变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据.根据所存储的数据类型的不同,有各种不同类型的变量.变量名代表这块内存中的数据.
变量分类
按所属的数据类型分类:
基本数据类型变量 引用数据类型变量
按被声明的位置划分:
局部变量:方法或语句块内部定义的变量
成员变量:方法外部,类的内部定义的变量
命名规则
Java对包,类,方法,参数和变量等要素命名时使用的字符序列称为标识符.
Java标识符命名规则:
由字母,数字,下划线(_)和美元符号($)组成.
不能以数字开头.
区分大小
长度无限制
不能是Java中的关键字和保留关键字.
(标识符命名习惯:驼峰命名法,见名见意,以单词或单词组合来命名)
例:
合法标识符:
vince,daoguo,user_name,_username,$abc_123
非法标识符:
2username(不能数字开头)
user#name(不能包含"#"号)
Hello 你好(汉字没有问题,中间有空格,最好不要用汉字)
static(不能用Java关键字)
ASCII码表
八中基本数据类型
字节
计算机文件大小的基本计算单位
1个字节(Byte)=8个位(Bit)
Bit意味"位"或"比特",是计算机运算的基础;
二进制中的一位,是二进制最小信息单位,二进位可以用来表示一个简单的正/负的判断,有两种状态的开关(如电灯的开关)
1个字节(Byte)=8个位(bit)
2个字节=16个位
4个字节=32个位
8个字节=64个位
单位换算:
1Byte=8Bit
1KB=1024Byte
1MB=1024KB
1GB=1024MB
1TB=1024GB
1PB=1024TB
说明:
在内存计算过程中,
字节少的数据运算速度更快
在硬盘存储中,
字节少的数据类型也可充分存入更多的数据.
数据类型||关键字||占用字节数||取值范围||默认值
布尔型 boolean 不定值 true,false false
字节型 byte 1 -128 ~ 127 0
短整型 short 2 -32768 ~ 32767 0
整型 int 4 略 0
长整型 long 8 略 0
字符型 char 2 0 ~ 65535 ‘\u0000’
单精度浮点型 float 4 略 0.0F
双精度浮点型 double 8 略 0.0D
省略的可以不用记住,数值很大,足以现阶段使用
基本数据类型转换
自动类型转换
容量小的类型自动转换成容量大的数据类型
byte,short,int,它们三者在计算时会转换成int类型
如果把int值转换为float值,或者long转换为double值,不需要强制转换,但可能丢失精度
public class class2{
public static void main(String[] args){
byte b=10;
short s=b;//把一个字节赋值给短整型变量,自动转换
int i=s;//把一个短整型赋值给整型变量,自动转换
long lon=i;
System.out.println(b);
System.out.println(s);
System.out.println(i);
System.out.println(lon);
//自动转换(char->int类型)
char sex='男';
int sex1=sex;
System.out.println(sex1);
float f=20f;
double d=f;
System.out.println(d);
//float和double是属于近似值
//byte char short int long属于精确值
//精确值转近似值时可能丢失精度
int num=23465723;
float num1=num;
//如果用于货币值,不建议使用float和double
//byte short int 在计算时会自动转换为int类型
short s1=10;
s1=(short)(s1+b);//强制类型转换
System.out.println(s1);
int x=(int)lon;//把大容量类型转换为小容量类型,强制转换
//有可能造成精度的降低或数据溢出.
}
}
引用类型
引用类型变量中的值是指向内存"堆"中的指针,及该变量所表示数据的地址.
Java语言中通常有5种引用类型:
(1)数组:具有相同数据类型的变量的集合.
(2)类(class):变量和方法的集合.
(3)接口(interface):一系列方法的声明,方法特征的集合.
(4)枚举(enum):一种独特的值类型,用于声明一组命名的常数.
(5)空类型(null type):空引用,即值为null的类型.空类型没有名称,不能声明一个null类型的变量,null是空类型的唯一值.
注意:空引用(null)只能被转换成引用类型,不能转换成基本类型,因此不要把一个null值赋给基本数据类型的变量.
自动类型转换
byte->short
char->int
short->int
int->long
int->float
int->double
float->double
/**
日期:2021.12.29
内容:自动,强制类型转换
*/
public class book1{
public static void main(String[] args){
/**
int a=56;
char c=(char)a;//把整型变量a强制类型转换为字符型
System.out.println("字符型(char):"+c);
*/
//自动类型转换
byte b=7;
char c='A';
int a=10;
long l=789L;
float f=3.14f;
double d=5.3d;
int i1=a+c;
System.out.println("i1="+i1);//字符型自用转换为整型
long l1=l-i1;
System.out.println("l1="+l1);//整型自动转成为长整型
float f1=b*f;
System.out.println("f1="+f1);//字节型自动转换成浮点型
double d1=d/a;
System.out.println("d1="+d1);//整型自动转换成双精度
int i2=(int)f1;
System.out.println("i2="+i2);//浮点型强制转换为正数
char c2=(char)(1/a);
System.out.println("c2="+c2);
//整型强制转换为长整型,再强制转换为字符型
}
}
位运算
/**
日期:2021.12.29
内容:位运算
*/
public class book2{
public static void main(String[] args){
int a=0b00101010;//0b为二进制的前缀
int b=0b00001111;
//按位与
System.out.println(Integer.toBinaryString(a&b));
//按位或
System.out.println(Integer.toBinaryString(a|b));
//按位异或
System.out.println(Integer.toBinaryString(a^b));
int c=0b11111000;
//左移
System.out.println(Integer.toBinaryString(c<<1));
//右移
System.out.println(Integer.toBinaryString(c>>1));
//无符号右移
System.out.println(Integer.toBinaryString(c>>>1));
}
}
三元操作符
/**
日期:2021.12.29
内容:三元操作符
*/
public class book3{
public static void main(String[] args){
int a=56;
int b=45;
int c=78;
System.out.println("a>b?a:b="+(a>b?a:b));
System.out.println("a>c?a:c="+(a>c?a:c));
}
}
关键字
转义字符
//转移字符
public class class3{
public static void main(String[] args){
System.out.print("转义字符测试");
System.out.print("我想输出一个回车符");
System.out.println();//这个也可以回车换行
System.out.print("换行字符测试\n");//\n属于回车换行符
System.out.print("我想输出一个回车符");
System.out.print("回车字符测试\r");
System.out.println("制表符测试\t");
System.out.println("反斜线字符输出\\");
System.out.println("单引号字符输出\'");
System.out.println("双引号字符输出\"");
}
}
运算符与优先级
算术运算符
"+,-,*,%(取余),++(自增(前,后)),–(自减(前,后))"6种算术运算符
关系运算符
"==(等于),!=(不等于),<(小于),>(大于),<=(小于等于),=>(大于等于)"等6中关系运算符
键盘输入
Scanner input=new Scanner(System.in);
/**
日期:2021.12.29
内容:键盘输入Scanner测试
*/
import java.util.Scanner;//接受键盘输入的工具包
public class class4{
public static void main(String[] args){
//创建一个键盘输入的工具
Scanner input=new Scanner(System.in);//键盘输入接受
System.out.print("从键盘输入一个整数(否则会出现错误):");
int x=input.nextInt();//从键盘接受一个整数
System.out.print("从键盘输入的值是:");
System.out.println(x);
}
}
分支语句
if条件语句
switch多分支语句
/**
日期:2021.12.30
内容:if条件语句
switch条件语句
*/
import java.util.Scanner;
public class book4{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("请输入一个整数值:");
int g=scanner.nextInt();
//判断g是否是负数
if(g<0){
System.out.println("负数");
}
//判断g是否是偶数还是奇数
if(g%2==0){
System.out.println("偶数");
}else{
System.out.println("奇数");
}
//判断g的等级
if(g>=90){
System.out.println("优秀");
}
else if(g>=80){
System.out.println("良好");
}
else if(g>=70){
System.out.println("中等");
}
else if(g>=60){
System.out.println("及格");
}
else{
System.out.println("不及格");
}
System.out.print("请再输入一个整数g值:");
g=scanner.nextInt();
//使用switch判断g的等级
switch(g/10){
case 10:
case 9:
System.out.println("优秀");
break;
case 8:
System.out.println("良好");
break;
case 7:
System.out.println("中等");
break;
case 6:
System.out.println("及格");
break;
default:
System.out.println("不及格");
}
System.out.print("请输入字符串(春天,夏天,秋天,冬天四选一):");
scanner=new Scanner(System.in);
String season=scanner.nextLine();
//执行switch分支语句
switch(season){
case "春天":
System.out.println("春天花开");
break;
case "夏天":
System.out.println("夏日炎炎");
break;
case "秋天":
System.out.println("秋高气爽");
break;
case "冬天":
System.out.println("冬雪皑皑");
break;
default:
System.out.println("季节输入错误");
}
}
}
循环语句
/**
日期:2021.12.30
内容:循环语句
for循环
while循环
do-while循环
break转移语句
continue语句
return语句
*/
public class book5{
public static void main(String[] args){
//循环的初始化,循环条件,循环迭代语句都在下面一行
for(int count=1;count<=10;count++){
System.out.println(count);
}
System.out.println("循环结束!");
//嵌套的for循环打印九九乘法表
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+i*j+" ");
}
System.out.println();
}
//while循环
//使用while循环求1~100的和
int sum=0;
int i=1;
while(i<=100){
sum+=i;
i++;
}
System.out.println("1~100的和是:"+sum);
//do-while循环
sum=0;
i=1;
do{
sum+=i;
i++;
}while(i<=100);
System.out.println("1~100的和是:"+sum);
for(i=1;i<=10;i++){
if(i==5){
System.out.println("找到目标,结束循环!");
//终止循环
break;
}
System.out.println(i);//打印当前的i值
}
//转移语句
//外层循环,outer作为标识符
outer:for(i=0;i<5;i++){
//内层循环
for(int j=0;j<3;j++){
System.out.println("i的值为:"+i+"j的值为:"+j);
if(j==1){
//跳出outer标签所标识的循环
break outer;
}
}
}
//continue语句
for(i=1;i<=10;i++){
if(i==5){
System.out.println("找到目标,继续循环!");
//跳出本次循环,进入下一次循环
continue;
}
System.out.println(i);//打印当前的i值
}
//return语句
//一个简单的for循环
for(i=0;i<3;i++){
System.out.println("i的值是:"+i);
if(i==5){
//返回,结束main方法
return;
}
System.out.println("return后的输出语句");
}
}
}