基础语法
系统会为程序分配的一块内存单元,其中用来储存各种类型的数据,在这个储存单元中的值能发生改变所以叫“变量”。基本数据类型的变量储存在栈内存中,引用数据类型的变量由栈内存中的地址指向堆内存中的变量值。
分类
| 数据类型 | 位数 | 数据范围 | 默认值 |
|---|---|---|---|
| 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);
}
}
浙公网安备 33010602011771号