- 变量与标识符
变量分类:
按照所属的数据类型划分:基本数据类型变量、引用数据类型变量
按被声明的位置划分:局部变量、成员变量
标识符命名习惯:驼峰命名法
- char在java中占用2个字节,这和C语言中不同。布尔类型(boolean)占用的字节不确定,而且默认值为false。(真实存储的时候,一般会转换成其他类型存储)
char c=97;//将打印出来字符a
-
注意,String表示一个字符串类型,不是基本数据类型,属于引用数据类型.
-
自动类型转换
byte,short,int ,它们三者在计算时会转成int类型,如果把int值转换为float值,或者long转换为double值,不需要强制转换,但可能会丢失精度。
例:
byte b=10;
short s=b;//可以直接转换的情况
float和double是属于近似值,而byte,char,short,int,long是属于精确值,精确值转近似值时可能会丢失精度
例:
int num=2147483000;
float num2=num;//输出结果为:2.14748301E9
所以如果用于表示货币值,不建议使用float或double
//面试题:
short s1=10;
s1=s1+1;
System.out.println(s1);
则结果为?
答:编译会报错,从int转到short可能会有损失,原因是byte、short在计算时会自动转成int类型。解决办法:将s1=s1+1变成:s1+=1即可。
- java中的保留字为const和goto
java如何进行输入输出?
例:
package kk;
import java.util.Scanner;//接收键盘输入的工具类,也可以直接java.util.*
public class hello_world {
public static void main(String[] args)
{
//创建一个键盘输入的工具类
Scanner input=new Scanner(System.in);
System.out.println("请输入一个整数:");
int x1=input.nextInt();//从键盘输入一个整数
System.out.println(x1);
System.out.println("请输入一个字符串:");
String s=input.next();
System.out.println(s);
}
}
第一道题:求圆柱体的体积
package kk;
import java.util.Scanner;//接收键盘输入的工具类
public class hello_world {
public static void main(String[] args){
System.out.println("请输入圆柱体的高:");
Scanner input=new Scanner(System.in);
int h=input.nextInt();
System.out.println("请输入圆柱体饿底面半径:");
int r=input.nextInt();//注意:Input只声明了一次
double result=3.14*(r*r)*h;
System.out.println("圆柱体的体积是:"+result);
}
}
关于取一个整数每一位的思考,举例:54321,最高位5的话,直接除以10000即可,中间的三位,分别先做除法再余10,最后一位直接余10即可.
面试题:&和&&的区别?
答:1.在做逻辑运算时分别计算表达式两边的结果,再做与运算;在做位运算时&表示按位与。2.&&短路与运算效率更高,先计算左边表达式,如果结果为false,那么不用计算右边表达式,直接返回false,如果左边表达式为true,再计算右边,右边也为true时,结果才为true。
(|和||的原理同上)
练习:(部分知识点)
//输入一个字符,判断是大写字母还是小写字母
/*
package kk;
import java.util.*;
public class hello_world{
public static void main(String[] args)
{//输入一个字符,判断是大写字母还是小写字母
Scanner input =new Scanner(System.in);
System.out.println("输入一个字符:");
String s=input.next();
char c=s.charAt(0); //注意,如何定义char
if(c>=65&&c<=90) {
System.out.println("您输入的是一个大写字母");
}else if(c>=97&&c<=122)
{
System.out.println("您输入的是一个小写字母");
}else
{
System.out.println("输入不规范!!!");
}
}
};*/
//写一个程序,判断某一年是否为闰年(被4整除但不能被100整除,能被400整除)是闰年,否则是平年
/*
package kk;
import java.util.*;
public class hello_world{
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
System.out.println("请输入年份:");
int year=input.nextInt();
if((year%4==0&&year%100!=0)||year%400==0)
{
System.out.println("是闰年!");
}else
System.out.println("不是闰年,是平年!");
}
};*/
/*判断今天星期几(用switch)
package kk;
import java.util.*;
public class hello_world{
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
System.out.println("今天是星期几?");
int day=input.nextInt();
switch(day)//switch括号内的返回值必须是int/char/short/byte,1.7之后支持字符串
{
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default://注意default也可以省略
System.out.println("输入错误!!!");
}
}
};
*/
package kk;
import java.util.*;
public class hello_world{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("这是输入的第一个数:");
int num1=input.nextInt();
System.out.println("这是输入的第二个数:");
int num2=input.nextInt();
System.out.println("请输入操作符:(+-*/)");
String op=input.next();
char c=op.charAt(0);
switch(c)
{ case '+':
System.out.println("num1+num2="+(num1+num2));
break;
case '-':
System.out.println("num1-num2="+(num1-num2));
break;
case '*':
System.out.println("num1*num2="+(num1*num2));
break;
case '/':
System.out.println("num1/num2="+(num1/num2));
break;
default:
System.out.println("输入的操作符有误!");
}
}
};
//关于switch的一点问题:
/*switch(c)
{ case '+':
int i=10;
System.out.println("num1+num2="+(num1+num2));
break;
case '-':
int i=20;
System.out.println("num1-num2="+(num1-num2));
break;
case '*':
System.out.println("num1*num2="+(num1*num2));
break;
case '/':
System.out.println("num1/num2="+(num1/num2));
break;
default:
System.out.println("输入的操作符有误!");
这里面i的作用域是整个switch的大括号内,即便我们执行的是'-'号,但是i仍可输出为20,若想缩小i的作用范围仅限于case,可以用大括号将一个case括起来,比如:
case '+':{
int i=10;
System.out.println("num1+num2="+(num1+num2));
break;}
}*/
关于java 7支持String的实现原理:
这个特性是在编译器的层次上实现的,在编译的时候,将switch转换成其他的方式,比如:
如果switch中只包含一个case语句,就可以转换成一个简单的if;如果包含一个case和一个default语句,就可以转换成if-else语句。而对于复杂的多case情况,可以转换成java 7之前的switch语句,只不过使用字符串的哈希值(整数)作为switch语句表达式的值
关于charAt方法://常用
java.lang.String.charAt()方法返回指定索引处的char值。索引范围 是从0 到length() - 1。
对于数组的索引,序列的第一个char值是在索引为0,索引1,以此类推。。
循环类的练习:
//计算阶乘,注意sum定义的初值是1而不是0
package kk;
import java.util.*;
public class hello_world{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("请输入一个数字:");
int n=input.nextInt();
int sum=1;
int i=1;
while(i<=n){
sum*=i;
i++;
}
System.out.println("阶乘为:"+sum);
}
};
//java阶乘求和,以上面的例子为引子
package kk;
import java.util.*;
public class hello_world{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("请输入一个整数:");
int n=input.nextInt();
int sum=0;//记录总和
int i=1;
do{
int j=1;
int jc=1;
while(j<=i){
jc*=j;
j++;
}
sum+=jc;
i++;
}while(i<=n);
System.out.println("阶乘之和为:"+sum);
}
};
//多重循环打印
//打印左三角形
/*
package kk;
import java.util.*;
public class hello_world{
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
System.out.println("输入层级数字n:");
int n=input.nextInt();
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++) {
System.out.print("*"); //注意,是print,不要用成了println
}
System.out.println();//不要忘记每行要换行
}
}
};*/
//打印九九乘法表
/*
package kk;
import java.util.*;
public class hello_world{
public static void main(String[] args)
{
//Scanner input=new Scanner(System.in);
System.out.println("九九乘法表如下:");
for(int i=1;i<=9;i++)
{
for(int j=1;j<=i;j++)
{
System.out.print(j+"*"+i+"="+i*j+" ");
}
System.out.println();
}
}
};*/
//打印右三角形
/*
package kk;
import java.util.*;
public class hello_world{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("输入层级数字:");
int n=input.nextInt();
for(int i=1;i<=n;i++)
{
for(int j=n;j>0;j--)
{if(j<=i)
System.out.print("*");
else
System.out.print(" ");
}
System.out.println();
}
}
};*/
//打印等腰三角形
/*
package kk;
import java.util.*;
public class hello_world{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("输入层数:");
int n=input.nextInt();
for(int i=1;i<=5;i++)
{
for(int j=i;j<5;j++)
System.out.print(" ");
for(int j=1;j<=i*2-1;j++)
System.out.print("*");
System.out.println();
}
}
};*/