java语言基础总结_java语言基础总结

一基础:

1.数据类型:

八大基本数据类型:byte short char int long float double。注意:float声明赋值时要在后面加上" f "符号。

引用数据类型:

类(class):如,字符串String

接口(interface)

数组(array)

2.标识符,关键字:

fc97f501375c8171b59a972d1b0eae47.png

a6c09a17a35a17afb1f820ce21a7886b.png

注意:String 不是关键字,是类。

goto和const是保留关键字,一般都不使用。

3.变量:

成员变量:在方法体外,类中声明的变量。

静态变量:声明时要在成员变量类型前加上关键字"static"。

实例变量。

局部变量:在方法体内声明的变量。

当方法内的局部变量 i 和类的变量 i 重命,那么在该方法内局部变量会替换掉类的变量。

4.运算符

运算时,整数类型默认为int类型,浮点数类型默认为double类型,都应强制性转换。

"+="或"-="运算结果为原来类型,不需强制性转换。

自增:

"++a"与"a++"区别:"++a"是先增加再运算,"a++"是先运算,再增加。自减同理。

&与&&的区别:当第一个表达式为假时,&&符号则不需要执行第二个表达式,而&则无论如何都要执行。

|与||的区别:同理。

位运算符:

按位与"&":同为1,才为1。

按位或"|":同为0,则为0。

按位取反"~":二进制1改为0,0改为1。

移位操作:移位操作效率高。

<<:>

>>:右移

>>>:无符号右移

三元运算符

5.数据类型转换:

int a = (int) 1.3;

练习:

1.写出运算结果

classNumber{public static voidmain(String[] args){int a=3,b=8;int c=(a>b)?a++:b++;

System.out.println("a="+a+" b="+b+" c="+c);int d=(a>b)?++a:++b;

System.out.println("a="+a+" b="+b+" d="+d);int e=(a

System.out.println("a="+a+" b="+b+" e="+e);int f=(a

System.out.println("a="+a+" b="+b+" f="+f);

}

}

---------- java ----------

a=3 b=9 c=8

a=3 b=10 d=10

a=4 b=10 e=3

a=5 b=10 f=5

2.用最有效率的方法算出2乘以8等于几

答:2 << 3

3.char型变量中能不能存贮一个中文汉字?为什么?

答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,

所以放一个中文是可以的。

二流程:

1.if-else流程

语法:

if(判断表达式){

为true时执行

}else{

为false时执行

}

注意:若无{},有多个if、else时,else与最近的if组成一对。

2.switch流程

语法:

switch(变量){

case 常量1:

语句1;

break;

case 常量2:

语句2;

break;

… …

case 常量N:

语句N;

break;

default:

语句;

break;

}

注意:写的时候不要忘记写break,没有break会全部执行,结果不一样。

switch()内可以是byte,short,char,int,String等,不可用浮点类型和long类型。

3.for流程

语法:

for(初始化部分; 循环条件部分; 迭代部分) {

循环体部分

}

语法:foreach  作用:遍历数组a

for(int i : a) {

}

注意:{}不可省略

4.while流程与do-while流程

while语法:

[初始化]

while(布尔值表达式) {

循环语句;

迭代语句;

}

do-while语法:

[初始化]

do{

循环语句;

迭代语句;

}while(布尔值表达式);

区别:do-while无论如何至少会执行一次,而while只有布尔值表达式为true时才会执行。

注意:do-while的while()后面要加上";"。

5.break语句

语法1:用于结束所在的一层循环块。

{

break;

}

语法2:break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块

label1: {

label2: {

label3: {

break label2;

}

}

}

6.continue语句

语法1:用于提前结果本次循环。

{

continue;

}

语法2:在某个循环体前加上标号,在continue后使用该标号,从而提前结果这个循环体的本次循环。

与break类似。

7.return语句

用于中止方法的。

return 后面只能根返回值且return后面的返回值类型必须跟方法的返回值类型一致。

注意:

break,continue,return共同点:后面不能再直接紧跟任何语句,否则编译错误提示:无法访问的语句。

练习:

1.从键盘分别输入年、月、日,判断这一天是当年的第几天。

1 public classTest {2 public static voidmain(String[] args) {3 Scanner scanner = newScanner(System.in);4 System.out.println("输入year:");5 int year =scanner.nextInt();6 System.out.println("输入month:");7 int month =scanner.nextInt();8 System.out.println("输入day:");9 int day =scanner.nextInt();10 int sumDay = 0;11 switch(month) {12 case 12:13 sumDay += 30;14 case 11:15 sumDay += 31;16 case 10:17 sumDay += 30;18 case 9:19 sumDay += 31;20 case 8:21 sumDay += 31;22 case 7:23 sumDay += 30;24 case 6:25 sumDay += 31;26 case 5:27 sumDay += 30;28 case 4:29 sumDay += 31;30 case 3:31 if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0){32 sumDay += 29;33 } else{34 sumDay += 28;35 }36 case 2:37 sumDay += 31;38 case 1:39 sumDay +=day;40

41 }42 System.out.println(year + "年" + month + "月" + day + "日是今年的第" +sumDay43 + "天");44 }45 }

2.打印如下图形

4b4c53f24485e7e973227c71e4efdada.png

//上半部分

for(int i = 0;i < 5;i++){//输出“-”

for(int j = 0;j < 4-i;j++){

System.out.print(" ");

}//输出“* ”

for(int k = 0;k < i+1;k++){

System.out.print("* ");

}

System.out.println();

}//下半部分

for(int i = 0;i < 4;i++){for(int j = 0;j < i+1;j++){

System.out.print(" ");

}for(int k = 0;k < 4-i;k++){

System.out.print("* ");

}

System.out.println();

}

3.输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。

例如: 153 = 1*1*1 + 3*3*3 + 5*5*5

classShuiXianHua{public static voidmain(String[] args){for(int i = 100;i < 1000;i++){//实现所有的三位数的一个遍历

int j1 = 0;int j2 = 0;int j3 = 0;

j1= i / 100;//百位

j2 = (i - 100*j1) / 10;//十位

j3 = i - 100*j1 - 10*j2;//个位

if( i == j1*j1*j1 + j2*j2*j2 + j3*j3*j3){

System.out.println("此数值为满足条件的水仙花数:" +i);

}

}

}

}

三字符串:

1.String 类代表字符串。

2.String 常用方法:

返回指定索引处的 char 值。

String anotherString)

按字典顺序比较两个字符串。

String 与另一个 String 比较,不考虑大小写。

返回一个新的字符串,它是通过用 newChar

替换此字符串中出现的所有 oldChar 得到的。

正则表达式的匹配拆分此字符串。

返回一个新字符串,它是此字符串的一个子字符串。

String 中的所有字符都转换为小写。

String 中的所有字符都转换为大写。

返回 int 参数的字符串表示形式。

四数组:

1.一维数组

数据组的定义:数据类型[] 数组变量名。

静态初始化:在定义数组的同时就为数组元素分配空间并赋值。

如int[] array2 = {0, 1, 2};//数组间的元素使用英文逗号","分隔。

int[] array3 = new int[]{0, 1, 2};

动态初始化:数组声明且为数组元素分配空间与赋值的操作分开进行。

如int[] array4 = new int[3];

array4[0] = 0;array4[1] = 1;array4[2] = 2;

注意:

1.数组初始化时,必须指定长度。

2.数组的每个元素跟类的成员变量一样,都会被默认初始化,且基本数据类型初始值为相应的类型初始化值,而引用数据类型的初始化值为null。

2.多维数组

格式1(动态初始化):int[][] arr = new int[3][2];

格式2(动态初始化):int[][] arr = new int[3][];

每个一维数组都是默认初始化值null (注意:区别于格式1)

3.数组常用方法

使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。

复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。

如果两个指定的 int 型数组彼此相等,则返回 true。

将指定的 int 值分配给指定 int 型数组的每个元素。

对指定的 int 型数组按数字升序进行排序。

返回指定数组内容的字符串表示形式。

练习:

1.冒泡排序和选择排序

public classSort{public void bubble(int[] array){if(array == null || array.length == 0){return;

}

System.out.println("排序前:" +Arrays.toString(array));int len =array.length;for(int i = 0; i < len - 1; i++){//为什么是len - 1,因为最后一个不需要再去排序

for(int j = 0; j < len - 1 - i; j++){//为什么是len - 1 - i。因为每一次排序都会把最大的放到最后

if(array[j] > array[j + 1]){

array[j]= array[j] ^ array[j + 1];

array[j+ 1] = array[j] ^ array[j + 1];

array[j]= array[j] ^ array[j + 1];

}

}

}

System.out.println("冒泡排序后:" +Arrays.toString(array));

}public void select(int[] array){if(array == null || array.length == 0){return;

}

System.out.println("排序前:" +Arrays.toString(array));int len =array.length;for(int i = 0; i < len - 1; i++){int minIndex =i;for(int j = i + 1; j < len; j++){if(array[minIndex] >array[j]){

minIndex=j;

}

}if(minIndex !=i){

array[minIndex]= array[minIndex] ^array[i];

array[i]= array[minIndex] ^array[i];

array[minIndex]= array[minIndex] ^array[i];

}

}

System.out.println("选择排序后:" +Arrays.toString(array));

}

}

public classSortDemo{public static voidmain(String[] args){int[] array = {49, 38, 65, 97, 76, 13, 27, 49};

Sort sort= newSort();

sort.bubble(array);

sort.select(array);

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值