基础语法

变量

系统会为程序分配的一块内存单元,其中用来储存各种类型的数据,在这个储存单元中的值能发生改变所以叫“变量”。基本数据类型的变量储存在栈内存中,引用数据类型的变量由栈内存中的地址指向堆内存中的变量值。

分类

按数据类型分为八种基本数据类型的变量与引用数据类型的变量,其中八种基本数据类型的变量有四种整型:byte,short,int,long;两种浮点型:float,double;一种字符型:char;一种布尔类型:boolean。引用数据类型大致包括类,接口,数组,枚举,注解,字符串这些类型。所有非基本数据类型都是引用数据类型。

数据类型位数数据范围默认值
byte(字节型) 8 -128~127 0
short(短整型) 16 -32768~32767 0
int(整型) 32 -2147483648~2147483647 0
long(长整型) 64 -9223372036854775808L~9223372036854775807L 0
float(单精度) 32 -3.40292347E38~3.40272347E38 0.0f
double(双精度) 64 -1.79769313486231570E308~1.79769313486231570E308 0.0d
char(字符型) 16 0~255 '\u0000'
boolean(布尔型) 1 true/false false

按被声明的位置划分分为局部变量和成员变量。局部变量是方法或语句块内部定义的变量,成员变量是方法外部,类的内部定义的变量。这两个变量的作用域不同,局部变量只能在方法或语句块内部调用,成员变量可以在类内部任何位置调用。类的外面不能有变量的声明。

类型转换

在基本数据类型的类型转换中,整数类型(byte,short,int,long,char)之间的转换,容量小的数据类型转容量大的数据类型不需要强制类型转换(这样的转换称为隐式类型转换)。容量大的数据类型转容量小的数据类型需要强制类型转换,转换公式为(容量小的类型)(变量名)=(容量小的类型)(变量名或者数字)。例如byte a =(byte) 255 此时a的值为-1,至于a的值为什么是-1,首先我们要知道byte类型的数据最大值为127,而255这个值用二进制位表示就是11111111,这是补码表示的二进制数据,它被传递给a这个byte类型数据,此时a的值用二进制表示就是11111111,这是补码,要获取对应的十进制数据我们还需要将补码转换成原码,根据原码求出十进制数据,补码转原码的规则是如果符号位(第一位)是1,则要将除符号位外的所有位取反,之后再加一,如果符号位为0,则不用改变。根据规则将a转换成原码后得到10000001,第一位是符号位,0代表正数,1代表负数,所以转换成十进制就是-1。long类型变量的定义要注意,因为我们写出的数字默认类型是int类型的,所以直接写出超出int类型的范围的数字是会报错的,要在数字后加上l进行强制类型转换才不会报错,例如long a = 12345678910l 。在对char类型进行运算时要注意,一旦字符参与了运算例如char a = 'a'+1 并且最后得到的类型还是char,那么输出a时就是以字符形式输出的。浮点数类型的转换也是一样,精度低的类型能直接转换成精度高的类型,精度高的类型需要强制类型转换才能转换成精度低的类型,并且如果直接在程序中写float a = 12.1 是会报错的,这是因为12.1默认类型是double类型,所以要强制类型转换float a = (float) 12.1 或者float a = 12.1f。浮点数转换成整数也需要强制类型转换。boolean不能与其他基本数据类型进行转换。

方法

方法用于封装一段特定的逻辑功能。方法的主要要素有:权限修饰符,方法名,参数列表和返回值。

访问修饰符同一个类同一个包不同包,子类不同包,非子类
private      
默认    
protected  
public
## 练习        
public static void main(String[] args){
   //不借助辅助变量调换a,b的值
   int a = 10;
   int b = 20;
   a = a+b;
   b = a-b;
   a = a-b;
   System.out.println("a的值为:"+a);
   System.out.println("b的值为:"+b);
}
public static void main(String[] args){
   //判断五位数字是否是回文数字
   judge(12321);
   judge(12345);
}
/**
   * judge:(判断五位数字是否是回文数字).
   * @author
   * @param n 传入一个五位数字
   * @since JDK 1.8
   */
public static void judge(int n) {
   if(n%10 == n/10000 && n%100/10 == n%10000/1000)
       System.out.println("数字"+n+"是回文数字");
   else
       System.out.println("数字"+n+"不是回文数字");
}
public static void main(String[] args){
   //计算出五位正整数各位数之和
   System.out.println("各位数字之和为"+sum(12345));
}
public static int sum(int n) {
   int sum = 0;
   while(n>0) {
       sum += n%10;
       n = n/10;
  }
   return sum;
}
/** 
* Project Name:day01_test1
* File Name:Demo9.java
* Package Name:day01
* Date:2021年7月19日上午9:50:57
* Copyright (c) 2021, 2081456012@qq.com All Rights Reserved.
*
*/  
 
package day01;  
/**
* ClassName:Demo9
* Function: TODO ADD FUNCTION.
* Reason:   TODO ADD REASON.
* Date:     2021年7月19日上午9:50:57
* @author  
* @version  
* @since   JDK 1.8
* @see      
*/
public class Demo9 {
/**
*
* main:(程序执行的入口).
* @author
* @param args 命令行参数
* @since JDK 1.8
*/
public static void main(String[] args) {
//在控制台打印出Hello World!语句。
sayHelloWorld();
}
/**
*
* sayHelloWorld:(调用这个方法在控制台打印出Hello World!语句).
* @author
* @since JDK 1.8
*/
public static void sayHelloWorld() {
//储存“Hello World!”字符串。
String str = "Hello World!";
System.out.print(str);
}
}
posted @ 2021-08-09 21:04  leafruomu  阅读(127)  评论(0)    收藏  举报