Java基础语法:类型转换详解

需积分: 9 0 下载量 84 浏览量 更新于2024-08-05 收藏 18KB MD 举报
"Java基础语法,包括类型转换的自动转换和强制转换" 在Java编程语言中,类型转换是一项基本操作,特别是在处理不同数据类型时。Java中有两种主要的类型转换方式:自动类型转换和强制类型转换。 ### 自动类型转换 自动类型转换发生在数据范围较小的类型向数据范围较大的类型转换时。这种转换是Java编译器自动执行的,无需程序员显式指定。例如,`byte`、`short`和`char`类型可以无损地转换为`int`类型,`int`可以转换为`long`,`float`或`double`。下面是一些例子: ```java byte a = 12; int b = a; // 自动类型转换,byte转int double num = 10.0; num = 10; // int转double,隐含的自动转换 ``` 在表达式中,所有参与运算的变量都会被提升到表达式中最高的数据类型,例如: ```java byte x = 10; byte y = 20; int sum = x + y; // 在加法运算中,byte被提升为int ``` 这里,尽管`x`和`y`都是`byte`类型,但在计算它们的和时,它们都被提升为`int`类型进行运算,结果也是`int`类型。 ### 强制类型转换 强制类型转换则需要程序员明确指定,当试图将数据范围较大的类型赋值给数据范围较小的类型时,必须进行强制转换。转换格式如下: ```java 目标数据类型 变量名 = (目标数据类型) 值或者变量; ``` 例如: ```java double num1 = 5.5; int num2 = (int) num1; // 强制类型转换,double转int,小数部分被截断 ``` 强制转换可能会导致数据丢失,例如在上述例子中,`num1`的小数部分会被直接舍弃。 ### 注意事项与特殊转换 1. 当`char`类型转换为`int`时,实际上是将字符转换为其在字符编码(如ASCII或Unicode)中的整数值。例如,字符 `'a'` 对应于 ASCII 码 97。 ```java char c = 'a'; int asciiValue = (int) c; // 输出97 ``` 2. 整数常量默认是`int`类型,除非后缀为`L`或`l`表示`long`,`F`或`f`表示`float`,`D`或`d`表示`double`。 3. 类型转换时需谨慎,因为如果数据范围过大,可能会导致溢出。例如,将一个大于`byte`最大值的`int`赋值给`byte`会抛出异常。 在编程实践中,理解并正确使用类型转换是避免错误和提高代码效率的关键。确保在进行类型转换时,充分考虑数据可能的损失和潜在的溢出问题。

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2023-07-18 09:20:08.549 ERROR 5944 --- [ restartedMain] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'service'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userServiceImpl' defined in file [D:\专高二代码\day2-zy\target\classes\com\bwie\service\impl\UserServiceImpl.class]: Initialization of bean failed; nested exception is java.lang.IllegalStateException: Encountered invalid @Scheduled method 'login': Only no-arg methods may be annotated with @Scheduled at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:660) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1425) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:593) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springf

2023-07-20 上传